3

draw.text()用来在画布上绘制一些文本。但该函数似乎只接受 3 个参数 x、y 和 body,因此无法指定什么字体、颜色等。可能我在这里遗漏了一些东西,因为这是非常基本的功能。我错过了什么?

4

1 回答 1

9

使用wand.drawing.Drawing,您需要构建绘图对象的“上下文”。字体样式、系列、粗细、颜色等等,可以通过直接在draw对象实例上设置属性来定义。

from wand.image import Image
from wand.color import Color
from wand.drawing import Drawing
from wand.display import display

with Image(width=200, height=150, background=Color('lightblue')) as canvas:
    with Drawing() as context:
        context.fill_color = Color('orange')
        context.stroke_color = Color('brown')
        context.font_style = 'italic'
        context.font_size = 24
        context.text(x=25,
                     y=75,
                     body="Hello World!")
        context(canvas)
        canvas.format = "png"
        display(canvas)

用 wand.draw 改变文本样式

但是,如果您的draw对象已经具有矢量属性怎么办?

这是Drawing.push()&Drawing.pop()可用于管理您的绘图堆栈的地方。

 # Default attributes for drawing circles
 context.fill_color = Color('lime')
 context.stroke_color = Color('green')
 context.arc((75, 75), (25, 25), (0, 360))
 # Grow context stack for text style attributes
 context.push()
 context.fill_color = Color('orange')
 context.stroke_color = Color('brown')
 context.font_style = 'italic'
 context.font_size = 24
 context.text(x=25,
             y=75,
             body="Hello World!")
 # Return to previous style attributes
 context.pop()
 context.arc((175, 125), (150, 100), (0, 360))

带有上下文堆栈的文本样式

于 2015-06-02T14:54:41.660 回答