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)文章
TensorFlow通過文件名/文件夾名獲取標簽,并加入隊列的實現(xiàn)
今天小編就為大家分享一篇TensorFlow通過文件名/文件夾名獲取標簽,并加入隊列的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
jupyter 中文亂碼設(shè)置編碼格式 避免控制臺輸出的解決
這篇文章主要介紹了jupyter 中文亂碼設(shè)置編碼格式 避免控制臺輸出的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python中連通域分割Two-Pass算法的原理與實現(xiàn)詳解
兩遍掃描法(?Two-Pass?),正如其名,指的就是通過掃描兩遍圖像,將圖像中存在的所有連通域找出并標記,本文將詳細介紹Two-Pass算法的原理與實現(xiàn),需要的可以參考下2023-12-12
Python創(chuàng)建普通菜單示例【基于win32ui模塊】
這篇文章主要介紹了Python創(chuàng)建普通菜單,結(jié)合實例形式分析了Python基于win32ui模塊創(chuàng)建普通菜單及添加菜單項的相關(guān)操作技巧,并附帶說明了win32ui模塊的安裝命令,需要的朋友可以參考下2018-05-05
一小時學(xué)會TensorFlow2之大幅提高模型準確率
這篇文章主要介紹了TensorFlow2之大幅提高模型準確率,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09

