【问题标题】:How to save svg in pycairo w/o context manager如何在没有上下文管理器的pycairo中保存svg
【发布时间】:2021-12-15 12:07:50
【问题描述】:

我有一个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 文件。但是,在我的(更大的)项目中,我在构造函数中声明了表面,并且绘图是在一个方法中制作的......所以我不能使用上下文管理器。

如何“关闭”表面?

【问题讨论】:

    标签: python svg pycairo


    【解决方案1】:

    根据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()
    

    【讨论】:

    • 谢谢!哦!这是一个 RTFM 问题……抱歉。 flush() 应该在 finish 之前,不应该吗?
    • 再次按照文档...
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2023-01-18
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多