wxPython繪圖API

GDI+(圖形繪製接口),CoreGraphics和Cairo庫形成wxPython繪圖API的框架。wx.GraphicsContext是主要繪製對象,使用它來創建各種設備上下文對象。

wx.DC是一個抽象類。它的派生類用於渲染的圖形和文字在不同的設備。關聯設備類 -

  • wx.ScreenDC − 使用它描繪在屏幕上,而不是一個單獨的窗口。

  • wx.ClientDC − 使用它描繪在窗口(無邊框等裝飾的一部分)的客戶區域,但不從wxPaintEvent內使用它。

  • wx.PaintDC − 使用它描繪在窗口的客戶區域,但只能從wxPaintEvent內。

  • wx.WindowDC − 使用它描繪的窗口,包括裝飾的整個區域。這可能不提供對非Windows平臺。

wxPython中的繪圖API提供不同的功能繪製形狀,文字和圖像。需要繪製用途,如顏色,畫筆,刷子和字體的對象也可以使用GDI類構造。

wx.Colour類

顏色對象表示RGB(紅,綠和藍)的亮度值,每個是在0-255的比例組合。還有一些預定義的顏色對象-

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

顏色以RGB值自定義組合形成爲wx.Colour對象。

wx.Colour(r,g,b)

wx.Pen類

Pen對象確定的圖形像線,矩形,圓等的形狀的顏色,寬度和樣式

預定義的畫筆對象是-

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

預定義的畫筆樣式是 -

wx.SOLID

wx.DOT

wx.LONG_DASH

wx.SHORT_DASH

wx.DOT_DASH

wx.TRANSPARENT

wx.Brush 類

Brush是另一個基本圖形對象必須填寫的形狀,如矩形,橢圓形,圓形等的背景

自定義畫筆對象需要wx.Colour和畫筆的樣式參數。以下是預定義的刷樣式列表 -

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有許多便於繪製不同的形狀,文本和圖像的函數。

S.N.

函數與說明

1

DrawRectangle()

按給定尺寸繪製矩形

2

DrawCircle()

用給定的點爲中心以及半徑 繪製一個圓

3

DrawEllipse()

用給定的x和y半徑繪製一個橢圓

4

DrawLine()

繪製兩個wx.Point對象之間的線

5

DrawBitmap()

在給定的位置繪製圖像

6

DrawText()

顯示在指定的位置給定的文本

實例

上述函數是在下面的例子中實現的,利用畫筆,畫筆,顏色和字體的對象。

完整的代碼如下 -

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 - www.yiibai.com')
ex.MainLoop()

上面的代碼產生下面的輸出 -

wxPython繪圖API