将图像的一部分绘制到开罗表面
我正在使用 pygtk 和 cairo (...我必须说很棒的东西。感谢所有人)
我想知道如何在我的 cairo 表面上的大绘图区域上呈现部分图像。
我希望显示表面内的区域看起来被剪切,这样我就可以在这些区域中滚动图像,而不会干扰周围的绘制项目。
我可以将用于零件绘制的图像剪切到表面上,还是必须以正确的顺序获取绘图顺序,以便需要剪辑的图像重叠,从而根据需要隐藏部分并显示剪辑?
感谢您的指点
尼克
I am using pygtk and cairo (...wonderful stuff I must say. Thanks to all)
I am wondering how to present parts of images on my my cairo surface on a large drawingarea.
I would like to have areas within the displayed surface that appear to act clipped so I can scroll images through these areas without disturbing the surrounding drawn items.
Can I cut images for part drawing onto a surface or must I just get the drawing sequence in the proper order so that the images needing to be clipped are overlain and so part hidden as required and appear clipped?
thanks for any pointers
nick
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
开罗确实很棒! ctx.clip() 是一种方法,使用剪切路径(如下所示,仅在 pycairo 中,其中最终绘制的矩形仅命中三角形剪切区域)。
您还可以使用 CAIRO_OPERATOR_OUT 传输模式(我认为),但我对传输模式不太熟悉。这仅适用于第一次绘制,因为您的内容会填充一点 Alpha。
(当然,您建议的“绘画顺序”也很好用!)
Cairo is indeed wonderful! ctx.clip() is one way to do it, using a clipping path (shown below in just pycairo, where the final draw rectangle only hits the triangular clipped area).
You could also use a transfer mode of CAIRO_OPERATOR_OUT (I think), but I'm less familiar with the transfer modes. And that would only work on the first draw, since your content would fill the alpha a bit.
(Your suggestion of "Painting Order" will work fine, too, of course!)