我正在使用pygtk和cairo(......我必须说的很好的东西。感谢所有人)
我想知道如何在大型绘图区的我的cairo表面上呈现部分图像。
我希望显示的表面中的区域看起来像是剪裁的,这样我就可以在这些区域滚动图像而不会打扰周围绘制的项目。
我可以将部分绘图的图像剪切到曲面上,还是只需按正确的顺序绘制绘图序列,以便需要剪裁的图像覆盖并根据需要隐藏部分并显示剪裁?
感谢任何指针
缺口
答案 0 :(得分:1)
您也可以使用CAIRO_OPERATOR_OUT的传输模式(我认为),但我不熟悉传输模式。这只会在第一次抽奖时起作用,因为你的内容会填充alpha。
(你对“绘画顺序”的建议当然也会正常工作!)
import cairo
WIDTH, HEIGHT = 256, 256
surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
ctx = cairo.Context (surface)
ctx.rectangle(0,0,300,300)
ctx.set_source_rgb(0,0,0)
ctx.fill()
ctx.move_to(0,0)
ctx.line_to(200,90)
ctx.line_to(90,200)
ctx.line_to(0,0)
ctx.close_path()
ctx.clip()
ctx.rectangle(0,0,300,300)
ctx.set_source_rgb(1,1,0)
ctx.fill()
surface.write_to_png("clipped.png")