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()
上面的代码产生以下输出 :