wxPython - Drawing API
GDI+ (Antarmuka Gambar Grafik), CoreGraphics dan Cairo librariesbentuk kerangka menggambar API di wxPython. wx.GraphicsContext adalah objek drawable utama, yang digunakan untuk membuat berbagai objek Konteks Perangkat.
wx.DC adalah kelas abstrak. Kelas turunannya digunakan untuk merender grafik dan teks pada perangkat yang berbeda. Kelas Konteks Perangkat adalah -
wx.ScreenDC - Gunakan ini untuk melukis di layar, bukan di jendela satu per satu.
wx.ClientDC - Gunakan ini untuk melukis di area klien jendela (bagian tanpa batas dan dekorasi lainnya), tetapi jangan gunakan dari dalam wxPaintEvent.
wx.PaintDC- Gunakan ini untuk melukis di area klien jendela, tetapi hanya dari dalam wxPaintEvent.
wx.WindowDC- Gunakan ini untuk mengecat seluruh area jendela, termasuk dekorasi. Ini mungkin tidak tersedia di platform non-Windows.
Drawing API dari wxPython menawarkan fungsi yang berbeda untuk menggambar bentuk, teks dan gambar. Objek yang diperlukan untuk tujuan menggambar, seperti Warna, Pena, Kuas, dan Font juga dapat dibuat menggunakan kelas GDI.
wx.Kelas Warna
Objek warna mewakili kombinasi nilai intensitas RGB (RED, Green dan Blue), masing-masing pada skala 0-255. Ada beberapa objek warna standar seperti -
- wxBLACK
- wxBLUE
- wxCYAN
- wxGREEN
- wxYELLOW
- wxLIGHT_GREY
- wxRED
- wxWHITE
Warna dengan kombinasi kustom nilai RGB dibentuk sebagai wx.Colour object.
wx.Colour(r,g,b)
wx.Pen Kelas
Objek pena menentukan warna, lebar dan gaya bentuk grafik seperti garis, persegi panjang, lingkaran, dll.
Predefined Pen objects adalah -
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 adalah -
wx.SOLID |
wx.DOT |
wx.LONG_DASH |
wx.SHORT_DASH |
wx.DOT_DASH |
wx.TRANSPARAN |
wx. Kelas Sikat
Kuas adalah objek grafis dasar lain yang diperlukan untuk mengisi latar belakang bentuk seperti persegi panjang, elips, lingkaran, dll.
Objek Brush kustom membutuhkan parameter wx.Colour dan Brush style. Berikut ini adalah daftar gaya kuas standar -
wx.SOLID |
wx.STIPPLE |
wx.BDIAGONAL_HATCH |
wx.CROSSDIAG_HATCH |
wx.FDIAGONAL_HATCH |
wx.CROSS_HATCH |
wx.HORIZONTAL_HATCH |
wx.VERTICAL_HATCH |
wx.TRANSPARAN |
wxPython memiliki sejumlah fungsi yang memfasilitasi menggambar berbagai bentuk, teks, dan gambar.
SN | Fungsi & Deskripsi |
---|---|
1 | DrawRectangle() Menggambar persegi panjang dengan dimensi tertentu |
2 | DrawCircle() Menggambar lingkaran pada titik tertentu sebagai pusat dan jari-jari |
3 | DrawEllipse() Menggambar elips dengan jari-jari x dan y yang diberikan |
4 | DrawLine() Menarik garis antara dua objek wx.Point |
5 | DrawBitmap() Gambarlah gambar pada posisi tertentu |
6 | DrawText() Menampilkan teks yang diberikan pada posisi yang ditentukan |
Contoh
Fungsi di atas diimplementasikan dalam contoh berikut, menggunakan objek Pena, Kuas, Warna dan Font.
Kode lengkapnya adalah sebagai berikut -
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()
Kode di atas menghasilkan keluaran sebagai berikut -