wxPython之wx.DC繪製形狀
阿新 • • 發佈:2020-01-09
本文例項為大家分享了wxPython繪製形狀的具體程式碼,供大家參考,具體內容如下
繪製形狀
除了繪製文字和點陣圖,DC也可以繪製任意的形狀和線。這允許我們完全自定義視窗部件和控制元件的外觀。
示例說明
利用PaintDC建立一個簡單笑臉控制元件。
#-*-coding: UTF-8 -*- #------------------------------------------------------ #Purpose: nothing.... #Author: 阿Bin先生 #Created: 2017年5月21日 #------------------------------------------------------ import wx class Smiley(wx.PyControl): def __init__(self,parent,size=(100,100)): super(Smiley,self).__init__(parent,size=size,style=wx.NO_BORDER) # Event Handlers self.Bind(wx.EVT_PAINT,self.OnPaint) def OnPaint(self,event): """Draw the image on to the panel""" dc = wx.PaintDC(self) # Must create a PaintDC # Get the working rectangle we can draw in rect = self.GetClientRect() # Setup the DC dc.SetPen(wx.BLACK_PEN) # for drawing lines / borders yellowbrush = wx.Brush(wx.Colour(255,255,0)) dc.SetBrush(yellowbrush) # Yellow fill cx = (rect.width / 2) + rect.x cy = (rect.width / 2) + rect.y radius = min(rect.width,rect.height) / 2 dc.DrawCircle(cx,cy,radius) eyesz = (rect.width / 8,rect.height / 8) eyepos = (cx / 2,cy / 2) dc.SetBrush(wx.BLUE_BRUSH) dc.DrawRectangle(eyepos[0],eyepos[1],eyesz[0],eyesz[1]) eyepos = (eyepos[0] + (cx - eyesz[0]),eyepos[1]) dc.DrawRectangle(eyepos[0],eyesz[1]) dc.SetBrush(yellowbrush) startpos = (cx / 2,(cy / 2) + cy) endpos = (cx + startpos[0],startpos[1]) dc.DrawArc(startpos[0],startpos[1],endpos[0],endpos[1],cx,cy) dc.SetPen(wx.TRANSPARENT_PEN) dc.DrawRectangle(startpos[0],endpos[0] - startpos[0],startpos[1] - cy) class MyFrame(wx.Frame): def __init__(self,*args,**kwargs): super(MyFrame,**kwargs) # Attributes self.Panel = wx.Panel(self) Smiley(self.Panel) class MyApp(wx.App): def OnInit(self): self.frame = MyFrame(None,title="DrawShapes",size = [500,500]) self.SetTopWindow(self.frame) self.frame.Show() return True if __name__ == "__main__": app = MyApp(False) app.MainLoop()
執行結果:
示例分析
DC的SetPen用來繪製線條和形狀的邊框。DC的SetBrush用來填充顏色。首先使用DCdeDrawCircle繪製一個黑色邊框的黃色圓,表示頭。然後使用DrawRectangle方法繪製藍色矩形,表示眼睛。最後使用DC的DrawArch方法繪製扇形,因為只想用圓弧來表示微笑,所以用矩形覆蓋圓弧兩端的兩條半徑線。
常用的基本繪製函式
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。