wxPython - API vẽ

GDI+ (Giao diện vẽ đồ họa), CoreGraphicsCairo 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: