【发布时间】:2010-02-18 21:23:31
【问题描述】:
似乎给定stroke_extents() 和translate(x, y) 和scale(x, y) 函数中的信息,我应该能够采用任意cairo(我正在使用pycairo)路径并“最适合”它。换句话说,将其居中并展开以填充可用空间。
在绘制路径之前,我已经对画布进行了缩放,使得原点为左下角,上为 y+,右为 x+,高度和宽度均为 1。鉴于这些条件,此代码 似乎 正确缩放路径:
# cr is the canvas
extents = cr.stroke_extents()
x_size = abs(extents[0]) + abs(extents[2])
y_size = abs(extents[1]) + abs(extents[3])
cr.scale(1.0 / x_size, 1.0 / y_size)
不过,我终其一生都无法弄清楚翻译。有没有更简单的方法?如何在画布上“最适合”开罗路径?
如果这个问题有什么不清楚的地方,请要求澄清。
【问题讨论】: