我用开罗画数字。我发现开罗使用的是绝对坐标#34;画画的时候。除了指定line_width
之外,它是一种灵活而舒适的方式。因为下面图像的比例不是1:1,当"绝对坐标"转换为"实际坐标",线条的宽度不相同。
WIDTH = 960
HEIGHT = 640
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
ctx = cairo.Context(surface)
ctx.scale(WIDTH, HEIGHT)
ctx.rectangle(0, 0, 1, 1)
ctx.set_source_rgb(255, 255, 255)
ctx.fill()
ctx.set_source_rgb(0, 0, 0)
ctx.move_to(0.5, 0)
ctx.line_to(0.5, 1)
ctx.move_to(0, 0.5)
ctx.line_to(1, 0.5)
ctx.set_line_width(0.01)
ctx.stroke()
在输出图像中将line_width
显示为相同比例的正确方法是什么?
答案 0 :(得分:0)
在致电ctx.scale()
之前撤消对stroke()
的来电,例如通过:
ctx.save()
ctx.set_line_width(2)
ctx.identity_matrix()
ctx.restore()
(之后save()
/ restore()
对再次应用所有转换)