wxPython 绘图 API


GDI +(图形绘图界面), 核心图形 and 开罗图书馆 在 wxPython 中形成绘图 API 的框架。 wx.GraphicsContext 是主要的可绘制对象,使用它来创建各种设备上下文对象。

wx.DC 是一个抽象类。其派生类用于在不同设备上呈现图形和文本。设备上下文类是:

  • wx.ScreenDC : 使用它在屏幕上绘制,而不是单个窗口。

  • wx.ClientDC : 使用它在窗口的客户区(没有边框和其他装饰的部分)上绘制,但不要在 wxPaintEvent 中使用它。

  • wx.PaintDC : 用这个在窗口的客户区上画,但是 only 从 wxPaintEvent 中。

  • wx.WindowDC : 用它涂在窗户的整个区域,包括装饰品。这在非 Windows 平台上可能不可用。

wxPython 的绘图 API 提供了绘制形状、文本和图像的不同功能。绘图所需的对象,如颜色、钢笔、画笔和字体也可以使用 GDI 类构建。

wx.Color 类


颜色对象表示 RGB(红色、绿色和蓝色)强度值的组合,每个值的范围为 0-255。有一些预定义的颜色对象,例如:

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

具有自定义 RGB 值组合的颜色形成为 wx.Color 对象 .

wx.Colour(r,g,b)

wx.Pen 类


Pen 对象决定线条、矩形、圆形等图形形状的颜色、宽度和样式。

预定义的 Pen 对象 are:

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

预定义的笔样式 are:

wx.SOLID
wx.DOT
wx.LONG_DASH
wx.SHORT_DASH
wx.DOT_DASH
wx.透明

wx.Brush 类


画笔是填充矩形、椭圆、圆形等形状背景所需的另一个基本图形对象。

自定义 Brush 对象需要 wx.Colour 和 Brush 样式参数。以下是预定义的画笔样式列表:

wx.SOLID
wx.STIPPLE
wx.BDIAGONAL_HATCH
wx.CROSSDIAG_HATCH
wx.FDIAGONAL_HATCH
wx.CROSS_HATCH
wx.HORIZONTAL_HATCH
wx.VERTICAL_HATCH
wx.透明

wxPython 有许多函数可以帮助绘制不同的形状、文本和图像。

S.N. 功能与说明
1

绘制矩形()

绘制给定尺寸的矩形

2

画圈()

在给定点绘制一个圆作为中心和半径

3

绘制椭圆()

用给定的 x 和 y 半径绘制一个椭圆

4

画线()

在两个 wx.Point 对象之间画一条线

5

绘制位图()

在给定位置绘制图像

6

绘图文本()

在指定位置显示给定文本

例子

上述功能在以下示例中实现,使用 Pen、Brush、Color 和 Font 对象。

完整代码如下:

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()

上面的代码产生以下输出:

Drawing Demo