Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dessiner sur un bitmap

avec Pygtk, Cairo

    5 mai 2011 à 16:24:35

    Bonjour,

    Je travail actuellement sur le traçage d'un graphe, qui est actuellement tracé à partir d'un pixbuf à l'aide de cairo sur une drawingArea.
    J'aimerai si possible le tracer en même temps sur un bitmap pour ensuite l'affiché quand le graph a besoin d'être réaffiché.

    Voici actuellement ce que je fais :

    #Fonction d'update de la drawingArea
    def on_Drawingarea_expose_event(self,widget,event):
            print ("methode on_drawingarea_expose_event")
            # on affiche le pixmap precedement enregistré
    
            if(self.parametersOK == True):
                
                #Si MAJ de l'écran
                if(self.pixbuf != None):
                    print("Using backup Pixbuff")
                    widget.window.draw_pixbuf(self.gc,self.pixbuf,0,0,0,0, -1, -1)
                    self.buttonScreenGraph.show()
                #Sinon premier affichage
                else:
                    try:                    
                        self.cairoCreate = widget.window.cairo_create()
                        self._expose_cairo(event, self.cairoCreate)                    
                        self.buttonScreenGraph.show()
                    except AttributeError:
                        print("error with cairo")
    


    Fonction qui appelle donc la première fois _expose_cairo, qui elle appelle ma fonction pour appliquer le contenu sur le graphe :

    def drawContent(self, cairoCreate, index, spacingY):
          self.layoutLabel = self.create_pango_layout(value)
          self.layoutLabel.set_font_description(pango.FontDescription("sans serif 7"))
          cairoCreate.move_to(self.LEFT_MARGIN_CONTENT+spacingX,spacingYContent)
          cairoCreate.show_layout(self.layoutLabel)
          cairoCreate.stroke()
    


    Et la création du pixbuf après avoir rempli le graphe :

    drawable = self.drawingArea.window
      colormap = drawable.get_colormap()
      self.gc = gtk.gdk.GC(self.drawingArea.window)       
            
      w, h = self.drawingArea.window.get_size()
            
      self.pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,0,8, w,h)
      self.pixbuf = self.pixbuf.get_from_drawable(drawable,colormap,0,0,0,0,-1,-1)
    


    Si besoin d'un aperçu du résultat, je rajouterais un screen.
    Merci d'avance !

    P.S : Je n'affiche pas tout dans les bouts de code, c'est juste à titre indicatif, pour que vous puissiez me diriger dans les démarches.
    • Partager sur Facebook
    • Partager sur Twitter

    Dessiner sur un bitmap

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown