我正在尝试更好地理解较低级别的Rebol 3图形(即不使用R3-GUI)。我在绘制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
关于我做错了什么的任何想法?第二个脚本不应该在功能上等同于第一个吗?
感谢。
答案 0 :(得分:3)
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
为了更容易预处理DRAW块我建议使用包含在R3-GUI中的方言预处理器。请参见此处:https://github.com/saphirion/r3-gui/blob/master/source/gfx-pre.r3。
此代码也可以独立于r3-gui工作...只需在实际代码之前执行gfx-pre.r3脚本,然后为了方便起见,您可以使用TO-TEXT和TO-DRAW功能。
绘图预处理器使用'经典'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。