wxPython - Çizim API'si

GDI+ (Grafik Çizim Arayüzü), CoreGraphics ve Cairo librarieswxPython'da çizim API'sinin çerçevesini oluşturur. wx.GraphicsContext, çeşitli Device Context nesnelerinin oluşturulduğu birincil çizilebilir nesnedir.

wx.DC soyut bir sınıftır. Türetilmiş sınıfları, farklı cihazlarda grafik ve metin oluşturmak için kullanılır. Device Context sınıfları şunlardır:

  • wx.ScreenDC - Tek bir pencerenin aksine ekranı boyamak için bunu kullanın.

  • wx.ClientDC - Bunu, pencerenin istemci alanını (kenarlıksız ve diğer süslemesiz kısım) boyamak için kullanın, ancak bir wxPaintEvent içinde kullanmayın.

  • wx.PaintDC- Bunu, pencerenin istemci alanını boyamak için kullanın, ancak yalnızca bir wxPaintEvent içinden.

  • wx.WindowDC- Dekorasyonlar da dahil olmak üzere pencerenin tüm alanını boyamak için bunu kullanın. Bu, Windows olmayan platformlarda mevcut olmayabilir.

WxPython'un Çizim API'si şekil, metin ve görüntü çizmek için farklı işlevler sunar. Renk, Kalem, Fırça ve Yazı Tipi gibi çizim amacıyla gerekli nesneler de GDI sınıfları kullanılarak oluşturulabilir.

wx.Colour Sınıfı

Renk nesnesi, her biri 0-255 ölçeğinde olan RGB (KIRMIZI, Yeşil ve Mavi) yoğunluk değerlerinin kombinasyonunu temsil eder. Aşağıdakiler gibi önceden tanımlanmış birkaç renk nesnesi vardır:

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

RGB değerlerinin özel kombinasyonuna sahip renk, wx.Colour object.

wx.Colour(r,g,b)

wx.Pen Sınıfı

Kalem nesnesi, çizgi, dikdörtgen, daire vb. Grafiklerin şeklinin rengini, genişliğini ve stilini belirler.

Predefined Pen objects -

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 -

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

wx.Brush Sınıfı

Fırça, dikdörtgen, elips, daire vb. Gibi şekillerin arka planlarını doldurmak için gereken başka bir temel grafik nesnesidir.

Özel bir Brush nesnesi, wx.Colour ve Brush stili parametreleri gerektirir. Aşağıda, önceden tanımlanmış fırça stillerinin bir listesi verilmiştir -

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, farklı şekil, metin ve görüntü çizmeyi kolaylaştıran bir dizi işleve sahiptir.

SN Fonksiyonlar ve Açıklama
1

DrawRectangle()

Verilen boyutlarda bir dikdörtgen çizer

2

DrawCircle()

Verilen noktada merkez ve yarıçap olarak bir daire çizer

3

DrawEllipse()

Verilen x ve y yarıçapına sahip bir elips çizer

4

DrawLine()

İki wx.Point nesnesi arasında bir çizgi çizer

5

DrawBitmap()

Verilen konumda bir resim çizin

6

DrawText()

Verilen metni belirtilen konumda görüntüler

Misal

Yukarıdaki işlevler, Kalem, Fırça, Renk ve Yazı tipi nesnelerinden yararlanılarak aşağıdaki örnekte uygulanmaktadır.

Kodun tamamı aşağıdaki gibidir -

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()

Yukarıdaki kod aşağıdaki çıktıyı üretir -