2014-10-03 26 views
0

我正在使用开罗绘制数字。我发现开罗在绘画时使用了“绝对坐标”。这是一个灵活和舒适的方式,除了指定line_width。由于下面图像的比例不是1:1,当“绝对坐标”转换为“实际坐标”时,线条宽度不相同。调整set_line_width()以正确比例?

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

撤消你对ctx.scale()电话通过呼叫stroke()之前,比如:

ctx.save() 
ctx.set_line_width(2) 
ctx.identity_matrix() 
ctx.restore() 

(该save()/restore()再次对所有适用的转换之后)