Python 3.x 如何在Cairocfi中正确重置剪辑?

Python 3.x 如何在Cairocfi中正确重置剪辑?,python-3.x,cairo,Python 3.x,Cairo,我正在尝试为自己编写一个模块,用于使用cairocffi进行一些简单的绘图,从而使使用该软件包的过程稍微简单一些。然而,我似乎在正确实现剪裁时遇到了一些问题。具体来说,我在正确重置剪裁区域时遇到问题 我编写了一个Python脚本示例,其结果应该是一个PostScript文件,其中包含: 1个红色圆圈\u 1 1从圆线的左下角到右上角的黑线1 1从图像左上角到图像线右下角的黑线2 但是,与从一个角延伸到另一个角的line2不同,它仍然被上一次对clip的调用所剪裁 下面是示例脚本: import

我正在尝试为自己编写一个模块,用于使用cairocffi进行一些简单的绘图,从而使使用该软件包的过程稍微简单一些。然而,我似乎在正确实现剪裁时遇到了一些问题。具体来说,我在正确重置剪裁区域时遇到问题

我编写了一个Python脚本示例,其结果应该是一个PostScript文件,其中包含:

1个红色圆圈\u 1 1从圆线的左下角到右上角的黑线1 1从图像左上角到图像线右下角的黑线2 但是,与从一个角延伸到另一个角的line2不同,它仍然被上一次对clip的调用所剪裁

下面是示例脚本:

import cairocffi as cairo
from math import pi

fig_w, fig_h = 237.6, 237.6
test_surf = cairo.PSSurface('test.ps', fig_w, fig_h)
temp_surf = cairo.PSSurface('temp.ps', fig_w, fig_h)

line1 = cairo.Context(temp_surf)
line1.move_to(0, fig_h)
line1.line_to(fig_w, 0)
line1.set_source_rgb(0,0,0)
line1.stroke()

circle_1 = cairo.Context(test_surf)
circle_1.arc(fig_w/2, fig_h/2, fig_w/4, 0, 2*pi)
circle_1.close_path()
circle_1.set_source_rgb(1,0,0)
circle_1.stroke_preserve()
circle_1.set_source_surface(temp_surf)
with circle_1:
    circle_1.clip()
    circle_1.paint()

line2 = cairo.Context(test_surf)
line2.reset_clip()
line2.move_to(0, 0)
line2.line_to(fig_w, fig_h)
line2.set_source_rgb(0,0,0)
line2.stroke()
我真的不确定我做错了什么。cairocffi文件似乎建议这样做,即参见和


如果有人能指出我做错了什么,我会非常感激。

拒绝编辑,那么做同样的事情是不受欢迎的。对不起,我是SE的新手。我没有主动拒绝任何编辑。我只是在提交我自己的建议期间/之后才看到这些建议。在以后做我自己的之前,我会确保检查编辑建议。