wxPython - API vẽ
GDI+ (Giao diện vẽ đồ họa), CoreGraphics và Cairo librariestạo khuôn khổ vẽ API trong wxPython. wx.GraphicsContext là đối tượng có thể vẽ chính, sử dụng các đối tượng Device Context khác nhau được tạo.
wx.DC là một lớp trừu tượng. Các lớp dẫn xuất của nó được sử dụng để kết xuất đồ họa và văn bản trên các thiết bị khác nhau. Các lớp Ngữ cảnh thiết bị là -
wx.ScreenDC - Sử dụng cái này để vẽ trên màn hình, trái ngược với một cửa sổ riêng lẻ.
wx.ClientDC - Sử dụng nó để vẽ trên khu vực khách hàng của cửa sổ (phần không có đường viền và các trang trí khác), nhưng không sử dụng nó từ bên trong wxPaintEvent.
wx.PaintDC- Sử dụng cái này để vẽ trên khu vực máy khách của cửa sổ, nhưng chỉ từ trong wxPaintEvent.
wx.WindowDC- Sử dụng cái này để vẽ trên toàn bộ khu vực của cửa sổ, bao gồm cả đồ trang trí. Điều này có thể không khả dụng trên các nền tảng không phải Windows.
API Vẽ của wxPython cung cấp các chức năng khác nhau để vẽ hình dạng, văn bản và hình ảnh. Các đối tượng cần thiết cho mục đích vẽ, như Màu, Bút, Bút vẽ và Phông chữ cũng có thể được xây dựng bằng các lớp GDI.
wx.Colour Class
Đối tượng màu thể hiện sự kết hợp của các giá trị cường độ RGB (RED, Green và Blue), mỗi giá trị trên thang 0-255. Có một số đối tượng màu được xác định trước như -
- wxBLACK
- wxBLUE
- wxCYAN
- wxGREEN
- wxYELLOW
- wxLIGHT_GREY
- wxRED
- wxWHITE
Màu với sự kết hợp tùy chỉnh của các giá trị RGB được tạo thành wx.Colour object.
wx.Colour(r,g,b)
Lớp wx.Pen
Đối tượng Pen xác định màu sắc, chiều rộng và kiểu dáng của hình dạng đồ họa như đường thẳng, hình chữ nhật, hình tròn, v.v.
Predefined Pen objects là -
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 là -
wx.SOLID |
wx.DOT |
wx.LONG_DASH |
wx.SHORT_DASH |
wx.DOT_DASH |
wx.TRANSPARENT |
wx.Brush Class
Brush là một đối tượng đồ họa cơ bản khác được yêu cầu để tô nền cho các hình dạng như hình chữ nhật, hình elip, hình tròn, v.v.
Một đối tượng Brush tùy chỉnh yêu cầu các thông số wx.Colour và Brush style. Sau đây là danh sách các kiểu bàn chải được xác định trước:
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 có một số chức năng hỗ trợ vẽ các hình dạng, văn bản và hình ảnh khác nhau.
SN | Chức năng & Mô tả |
---|---|
1 | DrawRectangle() Vẽ một hình chữ nhật có kích thước nhất định |
2 | DrawCircle() Vẽ một vòng tròn tại điểm đã cho làm tâm và bán kính |
3 | DrawEllipse() Vẽ một hình elip với bán kính x và y cho trước |
4 | DrawLine() Vẽ một dòng giữa hai đối tượng wx. |
5 | DrawBitmap() Vẽ hình ở vị trí đã cho |
6 | DrawText() Hiển thị văn bản đã cho ở vị trí được chỉ định |
Thí dụ
Các chức năng trên được thực hiện trong ví dụ sau, sử dụng các đối tượng Pen, Brush, Color và Font.
Mã hoàn chỉnh như sau:
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()
Đoạn mã trên tạo ra kết quả sau: