gpt4 book ai didi

python - 将 PangoCairo 与 PyGObject API 结合使用

转载 作者:太空狗 更新时间:2023-10-30 02:56:11 25 4
gpt4 key购买 nike

我正在移植一个使用 Pango 将文本绘制到 Cairo 表面的 Python2 脚本。将旧的 PyGtk API 与 pangocairo 包一起使用,效果很好。我的系统 (Debian Jesse) 没有用于 PyGtk 的 Python3 包,而是使用带有 PyGObject API 的较新的 Gtk+ 库。

我想创建一个 pangocairo.CairoContext 对象,但新 API 中似乎缺少它。 PangoCairo 包有一个 create_context() 函数,但它生成的 PangoContext 对象没有我需要的方法。

到目前为止我有这个:

import cairo
from gi.repository import Pango
from gi.repository import PangoCairo

surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
ctx = cairo.Context(surf)
pctx = PangoCairo.create_context(ctx) # Creates a PangoContext
pctx.set_antialias(cairo.ANTIALIAS_SUBPIXEL) # This fails

有效的旧 Python2 代码:

import cairo
import pango
import pangocairo

surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
ctx = cairo.Context(surf)
pctx = pangocairo.CairoContext(ctx)
pctx.set_antialias(cairo.ANTIALIAS_SUBPIXEL)

有人有解决办法吗?关于如何将 PangoCairo 与新 API 一起使用,是否有任何好的文档?

最佳答案

看起来图书馆已经重新安排了一下。现在从 Pango.Layout 对象中检索 Pango 上下文(现在是 Pango.Context)。这是一个可行的解决方案:

import cairo
from gi.repository import Pango
from gi.repository import PangoCairo

surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
ctx = cairo.Context(surf)
layout = PangoCairo.create_layout(ctx)
pctx = layout.get_context()

fo = cairo.FontOptions()
fo.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
PangoCairo.context_set_font_options(pctx, fo)

关于python - 将 PangoCairo 与 PyGObject API 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com