wxPython - 绘图API

GDI &加; (图形绘制界面), CoreGraphics Cairo库构成了wxPython中绘制API的框架. wx.GraphicsContext是主要的drawable对象,使用它创建各种Device Context对象.

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

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

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

  • wx.PaintDC : 使用它来绘制窗口的客户区域,但是在wxPaintEvent中仅 .

  • wx.WindowDC : 用它来绘制窗户的整个区域,包括装饰.这可能不适用于非Windows平台.

wxPython的绘图API提供了不同的绘制形状,文本和图像的功能.绘图目的所需的对象,如Color,Pen,Brush和Font也可以使用GDI类构造.

wx.Colour Class

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

  • wxBLACK

  • wxBLUE

  • wxCYAN

  • wxGREEN

  • wxYELLOW

  • wxLIGHT_GREY

  • wxRED

  • wxWHITE

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

 
 wx.Colour(r,g,b)

wx.Pen Class

Pen对象决定了图形形状的颜色,宽度和样式,如直线,矩形,圆形等.

预定义笔对象是 :

wxBLACK_DASHED_PEN
wxBLACK_PEN
wxBLUE_PEN
wxCYAN_PEN
wxGREEN_PEN
wxYELLOW_PE N
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 Class

画笔是另一种填充形状背景所需的基本图形对象,如矩形,椭圆,圆等.

自定义Brush对象需要wx.Colour和Brush样式pa rameters.以下是预定义笔刷样式和减号的列表;

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有许多功能,可以方便地绘制不同的形状,文字和图像.

SN函数& ;描述
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()

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

绘图演示