J'ai rencontré un problème que je soupçonne de faire des éléments de peinture/dessin au Caire. J'ai une fenêtre sans bordure dans pygtk, mais je dessine deux rectangles avec un rectangle noir cairo.a et un rectangle gris à l'intérieur. Lorsque la fenêtre est redimensionnée, il semble que certaines parties du rectangle intérieur ne sont pas dessinées/peintes. J'ai inclus 3 captures d'écran pour montrer ce problème.Repeindre les fenêtres du cairo?
Comme vous pouvez le voir dans la deuxième et la troisième image, quelques morceaux de la fenêtre n'obtiennent pas peint en gris. Une façon de résoudre ce problème est d'appeler la méthode present() de la fenêtre de pygtk ... mais cela rend mon programme extrêmement lent, car la hauteur de la fenêtre change à peu près à chaque frappe. Donc, je me demandais quelles sont les alternatives que je dois résoudre ce problème.
ci-dessous est le code cairo pertinent j'utilise
def expose(self, widget, e):
cr = widget.window.cairo_create()
# Draw the background
cr.set_operator(cairo.OPERATOR_SOURCE)
# Create black rectangle with 60% opacity (serves as border)
(width, height) = widget.get_size()
cr.set_source_rgba(0, 0, 0, 0.6)
cr.rectangle(0, 0, width, height)
cr.fill()
# Inside the black rectangle, put a lighter one (will hold widgets)
(width, height) = widget.get_size()
cr.set_source_rgb(205/255, 205/255, 193/255)
cr.rectangle(10, 10, width-20, height-20)
cr.fill()
return False
def screen_changed(self, widget, old_screen = None):
screen = widget.get_screen()
colormap = screen.get_rgba_colormap()
widget.set_colormap(colormap)
cela l'a fait. Merci. – sqram