如何在 pycairo w/o 上下文管理器中保存 svg
How to save svg in pycairo w/o context manager
我有一个 test.py
脚本,我只是这样使用的:
>>> import test
>>>
里面 test.py
:
import cairo
sfc = cairo.SVGSurface("test.svg", 720, 720)
ctx = cairo.Context(sfc)
ctx.set_source_rgb(.5, .5, 1)
ctx.arc(360, 360, 300, 0, 6.28)
ctx.fill()
在控制台中 Ctrl+D
之前,我没有 svg
输出。
使用上下文管理器 (with cairo.SVGSurface("test.svg", 720, 720) as sfc:
) 在导入模块后立即生成 svg
文件。但是,在我的(更大的)项目中,我在构造函数中声明了表面,并且绘图是在方法中绘制的……所以我不能使用上下文管理器。
如何“关闭”表面?
每个 the documentation 你调用 surface.finish() 然后 surface.flush()
import cairo
sfc = cairo.SVGSurface("test.svg", 720, 720)
ctx = cairo.Context(sfc)
ctx.set_source_rgb(.5, .5, 1)
ctx.arc(360, 360, 300, 0, 6.28)
ctx.fill()
sfc.finish()
sfc.flush()
我有一个 test.py
脚本,我只是这样使用的:
>>> import test
>>>
里面 test.py
:
import cairo
sfc = cairo.SVGSurface("test.svg", 720, 720)
ctx = cairo.Context(sfc)
ctx.set_source_rgb(.5, .5, 1)
ctx.arc(360, 360, 300, 0, 6.28)
ctx.fill()
在控制台中 Ctrl+D
之前,我没有 svg
输出。
使用上下文管理器 (with cairo.SVGSurface("test.svg", 720, 720) as sfc:
) 在导入模块后立即生成 svg
文件。但是,在我的(更大的)项目中,我在构造函数中声明了表面,并且绘图是在方法中绘制的……所以我不能使用上下文管理器。
如何“关闭”表面?
每个 the documentation 你调用 surface.finish() 然后 surface.flush()
import cairo
sfc = cairo.SVGSurface("test.svg", 720, 720)
ctx = cairo.Context(sfc)
ctx.set_source_rgb(.5, .5, 1)
ctx.arc(360, 360, 300, 0, 6.28)
ctx.fill()
sfc.finish()
sfc.flush()