Je suis en train de porter un script Python2 qui utilise Pango pour dessiner du texte sur une surface Cairo. Cela fonctionne très bien en utilisant l'ancienne API PyGtk avec le package pangocairo
. Mon système (Debian Jesse) n'a pas de paquets Python3 pour PyGtk et utilise plutôt les nouvelles bibliothèques Gtk + avec l'API PyGObject.Utilisation de PangoCairo avec l'API PyGObject
Je souhaite créer un objet pangocairo.CairoContext
mais il semble manquer dans la nouvelle API. Le package PangoCairo
a une fonction create_context()
mais génère un objet PangoContext
qui ne possède pas les méthodes dont j'ai besoin.
Jusqu'à présent, j'ai ceci:
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
L'ancien code python2 qui fonctionne:
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)
Quelqu'un at-il une solution pour cela? Y at-il une bonne documentation sur la façon dont PangoCairo
devrait être utilisé avec la nouvelle API?
"Le contexte Pango (maintenant Pango.Context) est récupéré à partir de l'objet Pango.Layout maintenant." Ce n'est pas la raison pour laquelle votre solution fonctionne. "pctx = PangoCairo.create_context (ctx)" fonctionnera de la même manière. Vous avez modifié le code qui définit l'anti-crénelage. – beroal