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 -