Image 将图像的一部分绘制到cairo曲面

Image 将图像的一部分绘制到cairo曲面,image,pygtk,cairo,Image,Pygtk,Cairo,我正在使用pygtk和cairo(…我必须说的是很棒的东西。谢谢大家) 我想知道如何在一个大的绘图区域上展示我开罗表面的部分图像 我希望在显示的表面内有一些区域看起来像是被剪裁的,这样我就可以在这些区域中滚动图像,而不会干扰周围绘制的项目 我可以将零件图的图像剪切到曲面上吗?或者我必须以正确的顺序获得绘图序列,以便覆盖需要剪裁的图像,并根据需要隐藏零件并显示剪裁 谢谢你的指点 尼克开罗真是太棒了!clip()是一种方法,使用剪裁路径(如下图所示,最终绘制的矩形仅命中三角形剪裁区域) 您也可以使用

我正在使用pygtk和cairo(…我必须说的是很棒的东西。谢谢大家)

我想知道如何在一个大的绘图区域上展示我开罗表面的部分图像

我希望在显示的表面内有一些区域看起来像是被剪裁的,这样我就可以在这些区域中滚动图像,而不会干扰周围绘制的项目

我可以将零件图的图像剪切到曲面上吗?或者我必须以正确的顺序获得绘图序列,以便覆盖需要剪裁的图像,并根据需要隐藏零件并显示剪裁

谢谢你的指点


尼克

开罗真是太棒了!clip()是一种方法,使用剪裁路径(如下图所示,最终绘制的矩形仅命中三角形剪裁区域)

您也可以使用CAIRO_OPERATOR_OUT的传输模式(我想),但我对传输模式不太熟悉。这只适用于第一次绘制,因为您的内容将填充alpha一点

(当然,你关于“绘画顺序”的建议也很管用!)


在等待/希望得到一些提示的同时尝试获取更多信息……我是不是在寻找类似于开罗运营商的东西,比如运营商_IN?我找不到详细的信息,用这样的方法把我带到我想去的地方。。。
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")