2014-01-05 58 views
4

我試圖更好地理解較低級別的Rebol 3圖形(即不使用R3-GUI)。我在渲染文本時遇到問題。Rebol 3使用GOB的文字渲染問題

這工作:

REBOL [] 

par: make system/standard/para [] 

gob-svg: make gob! [ ;this GOB is just for SVG graphics 
    offset: 0x0 
    size: 640x480 
    draw: none 
] 

rt: bind/only [ 
    size 18 para par text "This is a test!" 
] import 'text 

gob-svg/draw: bind compose/only [ 
    box 20x20 50x50 1 text 100x100 640x480 anti-aliased rt 
] import 'draw 

view gob-svg 

這不起作用:什麼我做錯了

REBOL [] 

par: make system/standard/para [] 

gob-svg: make gob! [ ;this GOB is just for SVG graphics 
    offset: 0x0 
    size: 640x480 
    draw: none 
] 

gob-svg/draw: bind compose/only [ 
    box 20x20 50x50 1 text 100x100 640x480 anti-aliased (
     bind/only compose [ 
      size 18 para (par) text "This is a test!" 
     ] import 'text 
    ) 
] import 'draw 

view gob-svg 

任何想法?第二個腳本不應該在功能上等同於第一個腳本嗎?

謝謝。

回答

3

Cyphre(Richard Smolak)在AltMe回答了我的問題。總結是我應該做一個綁定/只有而不只是一個綁定。他還清理了我的例子,例如消除不必要的撰寫。看他下面全響應:

ddharing:這裏是你的代碼段的工作版本:

par: make system/standard/para [] 

gob-svg: make gob! [;this GOB is just for SVG graphics 
    offset: 0x0 
    size: 640x480 
    draw: none 
] 

gob-svg/draw: bind/only compose/only [ 
    box 20x20 50x50 1 
    text 100x100 640x480 vectorial (
     bind [ 
      size 18 
      para par 
      text "This is a test!" 
     ] import 'text 
    ) 
] import 'draw 

view gob-svg 

來畫出塊的要容易得多預處理我建議使用方言預處理我納入R3- GUI。請看這裏:https://github.com/saphirion/r3-gui/blob/master/source/gfx-pre.r3

這個代碼可以獨立工作R3貴的,以及...您的實際代碼之前剛剛執行GFX-pre.r3腳本,然後你有到文本和TO-DRAW功能awailable爲您提供方便。

抽籤預處理器使用「經典」 DRAW方言語法(無需使用命令直接調用!)所以你的代碼示例可以再這個樣子:

do %gfx-pre.r3 

par: make system/standard/para [] 

gob-svg: make gob! [;this GOB is just for SVG graphics 
    offset: 0x0 
    size: 640x480 
    draw: none 
] 

gob-svg/draw: to-draw [ 
    box 20x20 50x50 
    text 100x100 640x480 vectorial [ 
     size 18 
     para par 
     "This is a test!" 
    ] 
] copy [] 

view gob-svg 

參考對於R3 DRAW方言語法可以在這裏找到:http://www.rebol.com/r3/docs/view/draw.html