wxPython - API de dessin

GDI+ (Interface de dessin graphique), CoreGraphics et Cairo librariesforment le cadre de l'API de dessin dans wxPython. wx.GraphicsContext est l'objet dessinable principal, à l'aide duquel divers objets de contexte de périphérique sont créés.

wx.DC est une classe abstraite. Ses classes dérivées sont utilisées pour rendre des graphiques et du texte sur différents appareils. Les classes de contexte de périphérique sont -

  • wx.ScreenDC - Utilisez-le pour peindre sur l'écran, par opposition à une fenêtre individuelle.

  • wx.ClientDC - Utilisez ceci pour peindre sur la zone cliente de la fenêtre (la partie sans bordures et autres décorations), mais ne l'utilisez pas depuis un wxPaintEvent.

  • wx.PaintDC- Utilisez ceci pour peindre sur la zone cliente de la fenêtre, mais uniquement à partir d'un wxPaintEvent.

  • wx.WindowDC- Utilisez-le pour peindre sur toute la surface de la fenêtre, y compris les décorations. Cela peut ne pas être disponible sur les plates-formes non Windows.

L'API de dessin de wxPython offre différentes fonctions pour dessiner la forme, le texte et l'image. Les objets nécessaires à des fins de dessin, comme la couleur, le stylo, le pinceau et la police, peuvent également être construits à l'aide de classes GDI.

Classe de couleur wx.

L'objet couleur représente une combinaison de valeurs d'intensité RVB (ROUGE, Vert et Bleu), chacune sur une échelle de 0 à 255. Il existe quelques objets de couleur prédéfinis comme -

  • wxBLACK
  • wxBLUE
  • wxCYAN
  • wxGREEN
  • wxYELLOW
  • wxLIGHT_GREY
  • wxRED
  • wxWHITE

La couleur avec une combinaison personnalisée de valeurs RVB est formée comme wx.Colour object.

wx.Colour(r,g,b)

Classe wx.Pen

L'objet Pen détermine la couleur, la largeur et le style de la forme des graphiques tels que la ligne, le rectangle, le cercle, etc.

Predefined Pen objects sont -

wxBLACK_DASHED_PEN
wxBLACK_PEN
wxBLUE_PEN
wxCYAN_PEN
wxGREEN_PEN
wxYELLOW_PEN
wxGREY_PEN
wxLIGHT_GREY_PEN
wxMEDIUM_GREY_PEN
wxRED_PEN
wxTRANSPARENT_PEN
wxWHITE_PEN

Predefined Pen styles sont -

wx.SOLID
wx.DOT
wx.LONG_DASH
wx.SHORT_DASH
wx.DOT_DASH
wx.TRANSPARENT

Classe wx.Brush

Le pinceau est un autre objet graphique élémentaire nécessaire pour remplir les arrière-plans de formes telles que rectangle, ellipse, cercle, etc.

Un objet Brush personnalisé nécessite les paramètres de style wx.Colour et Brush. Voici une liste de styles de pinceaux prédéfinis -

wx.SOLID
wx.STIPPLE
wx.BDIAGONAL_HATCH
wx.CROSSDIAG_HATCH
wx.FDIAGONAL_HATCH
wx.CROSS_HATCH
wx.HORIZONTAL_HATCH
wx.VERTICAL_HATCH
wx.TRANSPARENT

wxPython a un certain nombre de fonctions qui facilitent le dessin de différentes formes, textes et images.

SN Fonctions et description
1

DrawRectangle()

Dessine un rectangle de dimensions données

2

DrawCircle()

Dessine un cercle au point donné comme centre et rayon

3

DrawEllipse()

Dessine une ellipse avec les rayons x et y donnés

4

DrawLine()

Trace une ligne entre deux objets wx.Point

5

DrawBitmap()

Dessine une image à la position donnée

6

DrawText()

Affiche le texte donné à la position spécifiée

Exemple

Les fonctions ci-dessus sont implémentées dans l'exemple suivant, en utilisant les objets Pen, Brush, Color et Font.

Le code complet est le suivant -

import wx 
 
class Mywin(wx.Frame): 
            
   def __init__(self, parent, title): 
      super(Mywin, self).__init__(parent, title = title,size = (500,300))  
      self.InitUI() 
         
   def InitUI(self): 
      self.Bind(wx.EVT_PAINT, self.OnPaint) 
      self.Centre() 
      self.Show(True)
		
   def OnPaint(self, e): 
      dc = wx.PaintDC(self) 
      brush = wx.Brush("white")  
      dc.SetBackground(brush)  
      dc.Clear() 
        
      dc.DrawBitmap(wx.Bitmap("python.jpg"),10,10,True) 
      color = wx.Colour(255,0,0)
      b = wx.Brush(color) 
		
      dc.SetBrush(b) 
      dc.DrawCircle(300,125,50) 
      dc.SetBrush(wx.Brush(wx.Colour(255,255,255))) 
      dc.DrawCircle(300,125,30) 
		
      font = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.NORMAL) 
      dc.SetFont(font) 
      dc.DrawText("Hello wxPython",200,10) 
		
      pen = wx.Pen(wx.Colour(0,0,255)) 
      dc.SetPen(pen) 
      dc.DrawLine(200,50,350,50) 
      dc.SetBrush(wx.Brush(wx.Colour(0,255,0), wx.CROSS_HATCH)) 
      dc.DrawRectangle(380, 15, 90, 60) 
		
ex = wx.App() 
Mywin(None,'Drawing demo') 
ex.MainLoop()

Le code ci-dessus produit la sortie suivante -