
- wxPython 教程
- wxPython - 首頁
- wxPython - 簡介
- wxPython - 環境配置
- wxPython - Hello World
- wxPython - GUI 構建工具
- wxPython - 主要類
- wxPython - 事件處理
- wxPython - 佈局管理
- wxPython - 按鈕
- wxPython - 可停靠視窗
- 多文件介面 (Multiple Document Interface)
- wxPython 繪圖 API
- wxPython - 拖放
- wxPython 資源
- wxPython - 快速指南
- wxPython - 有用資源
- wxPython - 討論
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 類
畫筆物件決定圖形(如線、矩形、圓等)的形狀、顏色、寬度和樣式。
預定義的畫筆物件包括:
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 類
畫刷是另一個基本圖形物件,用於填充矩形、橢圓、圓等形狀的背景。
自定義畫刷物件需要 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 有許多函式可以方便地繪製不同的形狀、文字和影像。
序號 | 函式及描述 |
---|---|
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') ex.MainLoop()
以上程式碼產生以下輸出:
