wxPython Drawing API

GDI +(图形绘制接口), CoreGraphicsCairo库 构成了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()

下一章:wxPython 拖放操作

为用户提供 拖放 非常直观。在许多桌面应用程序中都可以找到,用户只需通过鼠标拖动并拖放到另一个窗口,就可以将对象从一个窗口复制或移动到另一个窗口。拖放操作涉及以下步骤:声明一个放置目标创建数据对象创建wx.Dro ...