似乎给出了其中的信息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)
我无法为我的生活弄清楚翻译。有没有更简单的方法?我怎样才能在画布上“最适合”开罗路径?
如果这个问题有任何不清楚的地方,请要求澄清。