开发手册 欢迎您!
软件开发者资料库

wxPython - 绘图API

wxPython Drawing API - 从Introduction,Environment,Hello World,wx.Frame类,wx.Panel类,GUI Builder工具,主要类,事件处理,布局管理,BoxSizer,GridSizer,FlexiGridSizer,GridBagSizer,StaticBoxSizer,Buttons开始学习wxPython。 StaticText类,TextCtrl类,RadioButton和RadioBox,CheckBox类,ComboBox和Choice类,Gauge类,滑块类,菜单项,Menu和MenuBar,ToolBar类,Dialog类,NoteBook类,Dockable Windows,多文档接口,SplitterWindow类,绘图API,HTMLWindow类,ListBox和ListCtrl类,拖放。

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()

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

绘图演示