首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PangoCairo与PyGObject API的结合

PangoCairo与PyGObject API的结合
EN

Stack Overflow用户
提问于 2016-10-22 16:04:10
回答 1查看 2.1K关注 0票数 5

我正在移植一个使用Pango绘制文本到开罗表面的Python2脚本。它可以很好地使用旧的PyGtk API和pangocairo包。我的系统(Debian杰西)没有用于Python3的PyGtk包,而是使用新的Gtk+库和PyGObject API。

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

到目前为止我有这样的想法:

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
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)

有人有办法解决这个问题吗?关于如何在新API中使用PangoCairo,有什么好的文档吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-22 17:35:12

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

代码语言:javascript
复制
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)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40194188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档