1. 程式人生 > >wxPython繪製相關圖形

wxPython繪製相關圖形

GDI+(圖形繪製介面),CoreGraphics和Cairo庫形成wxPython繪圖API的框架。wx.GraphicsContext是主要繪製物件,使用它來建立各種裝置上下文物件。

  • wx.DC是一個抽象類。它的派生類用於渲染的圖形和文字在不同的裝置。關聯裝置類 -
  • wx.ScreenDC − 使用它描繪在螢幕上,而不是一個單獨的視窗。
  • wx.ClientDC − 使用它描繪在視窗(無邊框等裝飾的一部分)的客戶區域,但不從wxPaintEvent內使用它。
  • wx.PaintDC − 使用它描繪在視窗的客戶區域,但只能從wxPaintEvent內。
  • wx.WindowDC − 使用它描繪的視窗,包括裝飾的整個區域。這可能不提供對非Windows平臺。
wxPython中的繪圖API提供不同的功能繪製形狀,文字和影象。需要繪製用途,如顏色,畫筆,刷子和字型的物件也可以使用GDI類構造。

例項一.圖形,文字,圖片顯示

import wx
from PIL import Image


class Frame1(wx.Frame):
    def __init__(self, parent):
        super(Frame1, self).__init__(parent, title='try', pos=(100, 200), size=(500, 300))
        self.Bind(wx.EVT_PAINT, self.on_paint)
        # 將客戶端顯示在螢幕中間
        self.Center()
        self.Show(True)

    def on_paint(self, event):
        dc = wx.PaintDC(self)
        # wx.Brush物件決定了背景的顏色和樣式。
        brush = wx.Brush('white')
        dc.SetBackground(brush)
        # 設定背景色並清空裝置上下文(dc.Clear())。必須呼叫dc.Clear()
        # 其作用是產生一個wx.EVT_PAINT事件,這樣,設定的背景就顯示出來了,否則螢幕顏色不會改變。
        # 使用當前背景刷來清除裝置上下文
        dc.Clear()

        # 畫線,位置是相對於pos點
        pen = wx.Pen(wx.Colour(0, 0, 255), 1, wx.SOLID)
        dc.SetPen(pen)
        dc.DrawLine(10, 10, 390, 190)

        # 新增文字
        font = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.NORMAL)
        dc.SetFont(font)
        dc.DrawText("Hello wxPython", 200, 10)

        # 畫矩形
        brush_rec = wx.Brush('red')
        dc.SetBrush(brush_rec)
        dc.DrawRectangle(100, 100, 140, 140)

        # 新增圖片
        # 修改影象寬度和高度
        img = Image.open("python.jpg")
        img = img.resize((180, 105))
        img.save("python.jpg")
        dc.DrawBitmap(wx.Bitmap("python.jpg"), 300, 100, True)


if __name__ == '__main__':
    app = wx.App()
    Frame1(None)
    app.MainLoop()