Python光學(xué)仿真wxpython之DC繪圖
一般來說,系統(tǒng)與繪圖程序之間的信息交換是由圖形設(shè)備接口(Graphics Device Interface,GDI)實現(xiàn)的,在wxpython中,通過device context(DC)對象來實現(xiàn)GDI的功能。
DC對象的創(chuàng)建非常簡單,只需引用wx.PaintDC
即可,而后則可通過dc來設(shè)置畫筆dc.SetPen
,有了畫筆,就可以進行圖形繪制了。于是,我們再考慮到圖形的屬性,包括形狀、顏色與邊框等,更細致地說,是圖形形狀、填充顏色、邊框類型、邊框顏色。
我們可以通過一個矩形的例子來說明:
上面的窗口由如下代碼實現(xiàn)。
import wx class Example(wx.Frame): def __init__(self, parent,title): super(Example,self).__init__(parent,title=title,size=(350,280)) self.Bind(wx.EVT_PAINT, self.OnShowColour) self.Center() #居中 self.Show() #顯示 def OnShowColour(self,evt): dc = wx.PaintDC(self) dc.SetPen(wx.Pen('#d4d4d4')) #設(shè)置畫筆顏色 dc.SetBrush(wx.Brush('#c56c00'))#設(shè)置填充顏色 dc.DrawRectangle(10,15,90,60) #繪制矩形 dc.SetBrush(wx.Brush('#1ac500')) dc.DrawRectangle(130,15,90,60) dc.SetBrush(wx.Brush('#539e47')) dc.DrawRectangle(250,15,90,60) dc.SetBrush(wx.Brush('#004fc5')) dc.DrawRectangle(10,105,90,60) def test(): app = wx.App() #創(chuàng)建App對象 Example(None,'Rect')#創(chuàng)建繪圖窗口 app.MainLoop() if __name__ == "__main__": test()
首先,通過dc.SetPen()
設(shè)置畫筆屬性,wx.Pen('#d4d4d4')
的標準調(diào)用格式為wx.Pen(wx.Colour,width,style)
,width顧名思義即為畫筆寬度,'#d4d4d4'是Colour類的一種表示,為紅、綠、藍三組十六進制值的組合,從而定義畫筆顏色。除了字符串的表示方法之外,還可以通過引用標準顏色庫或者調(diào)用wx.Colour()來對顏色進行定義。
例如,wx.Colour(255,0,0),‘Red'和'#FF0000'都表示紅色。標準顏色庫如表所示:
AQUAMARINE | BLACK | BLUE | BLUE VIOLET | BROWN |
CADET BLUE | CORAL | CORNFLOWER BLUE | CYAN | DARK GREY |
DARK GREEN | DARK OLIVE GREEN | DARK ORCHID | DARK SLATE BLUE | DARK SLATE GREY |
DARK TURQUOISE | DIM GREY | FIREBRICK | FOREST GREEN | GOLD |
GOLDENROD | GREY | GREEN | GREEN YELLOW | INDIAN RED |
KHAKI | LIGHT BLUE | LIGHT GREY | LIGHT STEEL BLUE | LIME GREEN |
MAGENTA | MAROON | MEDIUM AQUAMARINE | MEDIUM BLUE | MEDIUM FOREST GREEN |
MEDIUM GOLDENROD | MEDIUM ORCHID | MEDIUM SEA GREEN | MEDIUM SLATE BLUE | MEDIUM SPRING GREEN |
MEDIUM TURQUOISE | MEDIUM VIOLET RED | MIDNIGHT BLUE | NAVY | ORANGE |
ORANGE RED | ORCHID | PALE GREEN | PINK | PLUM |
PURPLE | RED | SALMON | SEA GREEN | SIENNA |
SKY BLUE | SLATE BLUE | SPRING GREEN | STEEL BLUE | TAN |
THISTLE | TURQUOISE | VIOLET | VIOLET RED | WHEAT |
WHITE | YELLOW | YELLOW GREEN |
除了顏色之外,SetPen中還可以定義其他屬性,例如畫筆樣式:
wx.SOLID
:實線
wx.DOT
:點線
wx.LONG_DASH
:長橫線
wx.SHORT_DASH
:短橫線
wx.DOT_DASH
:點橫線
wx.TRANSPARENT
:無邊框
dc.SetBrush為設(shè)置筆刷,即圖形內(nèi)部填充,除了wx.Colour()之外,其style包括以下類型
wx.SOLID
:實心填充
wx.BDIAGONAL_HATCH
:右斜紋wx.
CROSSDIAG_HATCH
:左斜紋wx.
FDIAGONAL_HATCH
:斜交叉紋wx.
CROSS_HATCH
:橫豎交叉紋
wx.HORIZONTAL_HATCH
:橫紋
wx.VERTICAL_HATCH
:縱紋
wx.TRANSPARENT
:無填充
dc.DrawRectangle為矩形繪制命令,其中四個參數(shù)分別為左上角點的坐標以及長寬值。除了矩形之外,wxpython提供了許多其他的圖形,如表所示
函數(shù) | 圖形 | 參數(shù)備注 |
---|---|---|
dc.DrawEllipse(x, y, width, height) | 橢圓 | |
dc.DrawRoundedRectangle(x, y, width, height, radius) | 圓角矩形 | radius為圓角半徑 |
dc.DrawArc(xStart, yStart, xEnd, yEnd, xc, yc) | 圓弧 | xc,yc為圓心 |
dc.DrawPolygon(points) | 多邊形 | 輸入為點集 |
dc.DrawRectangle(x, y, width, height) | 矩形 | |
dc.DrawSpline(points) | 曲線 | 輸入為點集 |
dc.DrawLines(points) | 折線 | 輸入為點集 |
dc.DrawCircle(x, y, radius) | 圓 |
以上就是Python光學(xué)仿真wxpython之DC繪圖的詳細內(nèi)容,更多關(guān)于wxpython之DC繪圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django用內(nèi)置方法實現(xiàn)簡單搜索功能的方法
這篇文章主要介紹了Django用內(nèi)置方法實現(xiàn)簡單搜索功能的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Python中的測試模塊unittest和doctest的使用教程
這篇文章主要介紹了Python中的測試模塊unittest和doctest的使用教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04Python實現(xiàn)簡單的列表冒泡排序和反轉(zhuǎn)列表操作示例
這篇文章主要介紹了Python實現(xiàn)簡單的列表冒泡排序和反轉(zhuǎn)列表操作,涉及Python列表遍歷、排序、追加等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07