Python光學(xué)仿真wxpython之DC繪圖
一般來(lái)說(shuō),系統(tǒng)與繪圖程序之間的信息交換是由圖形設(shè)備接口(Graphics Device Interface,GDI)實(shí)現(xiàn)的,在wxpython中,通過(guò)device context(DC)對(duì)象來(lái)實(shí)現(xiàn)GDI的功能。
DC對(duì)象的創(chuàng)建非常簡(jiǎn)單,只需引用wx.PaintDC
即可,而后則可通過(guò)dc來(lái)設(shè)置畫筆dc.SetPen
,有了畫筆,就可以進(jìn)行圖形繪制了。于是,我們?cè)倏紤]到圖形的屬性,包括形狀、顏色與邊框等,更細(xì)致地說(shuō),是圖形形狀、填充顏色、邊框類型、邊框顏色。
我們可以通過(guò)一個(gè)矩形的例子來(lái)說(shuō)明:
上面的窗口由如下代碼實(shí)現(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對(duì)象 Example(None,'Rect')#創(chuàng)建繪圖窗口 app.MainLoop() if __name__ == "__main__": test()
首先,通過(guò)dc.SetPen()
設(shè)置畫筆屬性,wx.Pen('#d4d4d4')
的標(biāo)準(zhǔn)調(diào)用格式為wx.Pen(wx.Colour,width,style)
,width顧名思義即為畫筆寬度,'#d4d4d4'是Colour類的一種表示,為紅、綠、藍(lán)三組十六進(jìn)制值的組合,從而定義畫筆顏色。除了字符串的表示方法之外,還可以通過(guò)引用標(biāo)準(zhǔn)顏色庫(kù)或者調(diào)用wx.Colour()來(lái)對(duì)顏色進(jìn)行定義。
例如,wx.Colour(255,0,0),‘Red'和'#FF0000'都表示紅色。標(biāo)準(zhǔn)顏色庫(kù)如表所示:
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
:實(shí)線
wx.DOT
:點(diǎn)線
wx.LONG_DASH
:長(zhǎng)橫線
wx.SHORT_DASH
:短橫線
wx.DOT_DASH
:點(diǎn)橫線
wx.TRANSPARENT
:無(wú)邊框
dc.SetBrush為設(shè)置筆刷,即圖形內(nèi)部填充,除了wx.Colour()之外,其style包括以下類型
wx.SOLID
:實(shí)心填充
wx.BDIAGONAL_HATCH
:右斜紋wx.
CROSSDIAG_HATCH
:左斜紋wx.
FDIAGONAL_HATCH
:斜交叉紋wx.
CROSS_HATCH
:橫豎交叉紋
wx.HORIZONTAL_HATCH
:橫紋
wx.VERTICAL_HATCH
:縱紋
wx.TRANSPARENT
:無(wú)填充
dc.DrawRectangle為矩形繪制命令,其中四個(gè)參數(shù)分別為左上角點(diǎn)的坐標(biāo)以及長(zhǎng)寬值。除了矩形之外,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) | 多邊形 | 輸入為點(diǎn)集 |
dc.DrawRectangle(x, y, width, height) | 矩形 | |
dc.DrawSpline(points) | 曲線 | 輸入為點(diǎn)集 |
dc.DrawLines(points) | 折線 | 輸入為點(diǎn)集 |
dc.DrawCircle(x, y, radius) | 圓 |
以上就是Python光學(xué)仿真wxpython之DC繪圖的詳細(xì)內(nèi)容,更多關(guān)于wxpython之DC繪圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django用內(nèi)置方法實(shí)現(xiàn)簡(jiǎn)單搜索功能的方法
這篇文章主要介紹了Django用內(nèi)置方法實(shí)現(xiàn)簡(jiǎn)單搜索功能的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12django中模板的html自動(dòng)轉(zhuǎn)意方法
今天小編就為大家分享一篇django中模板的html自動(dòng)轉(zhuǎn)意方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python通過(guò)配置文件共享全局變量的實(shí)例
今天小編就為大家分享一篇python通過(guò)配置文件共享全局變量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python中的測(cè)試模塊unittest和doctest的使用教程
這篇文章主要介紹了Python中的測(cè)試模塊unittest和doctest的使用教程,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04Python datetime 格式化 明天,昨天實(shí)例
這篇文章主要介紹了Python datetime 格式化 明天,昨天實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03pandas.dataframe按行索引表達(dá)式選取方法
今天小編就為大家分享一篇pandas.dataframe按行索引表達(dá)式選取方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10Python實(shí)現(xiàn)簡(jiǎn)單的列表冒泡排序和反轉(zhuǎn)列表操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的列表冒泡排序和反轉(zhuǎn)列表操作,涉及Python列表遍歷、排序、追加等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07使用PyQt5實(shí)現(xiàn)圖片查看器的示例代碼
這篇文章主要介紹了使用PyQt5實(shí)現(xiàn)圖片查看器的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04