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

上面的代码产生下面的输出 -


上一篇: wxPython多文档界面 下一篇: wxPython拖放