使用GOB的Rebol 3文本呈现问题

时间:2014-01-05 15:30:37

标签: svg rebol rebol3

我正在尝试更好地理解较低级别的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

关于我做错了什么的任何想法?第二个脚本不应该在功能上等同于第一个吗?

感谢。

1 个答案:

答案 0 :(得分:3)

Cyphre(Richard Smolak)在AltMe回答了我的问题。总结是我应该做一个 bind / only 而不仅仅是 bind 。他还清理了我的例子,例如消除了不必要的撰写。请参阅下面的完整回复:

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