wxPython Drawing API xPython多文档界面 wxPython拖放 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类 笔对象确定线条,矩形,圆形等图形形状的颜色,宽度和样式。 预定义的笔对象 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有许多方便绘制不同形状,文字和图像的功能。 SN 功能和说明 1 **DrawRectangle的()** 绘制给定尺寸的矩形 2 **画圆()** 在给定点绘制一个圆圈作为中心和半径 3 **DrawEllipse()** 用给定的x和y半径绘制一个椭圆 4 **的DrawLine()** 在两个wx.Point对象之间绘制一条线 五 **DrawBitmap()** 在给定位置绘制图像 6 **DrawText的()** 在给定的位置显示给定的文本 例 以下函数在以下示例中实现,使用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.png"),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() 上面的代码产生以下输出 - xPython多文档界面 wxPython拖放