wxPython 绘图 API

wxPython 绘图 API

GDI (图形绘制接口)、 CoreGraphicsCairo libraries 组成了 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() 在指定位置显示给定文本

示例

上述功能在以下示例中实现,使用了Pen、Brush、Colour和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()

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

wxPython 绘图 API

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程