Python光學(xué)仿真wxpython之DC繪圖
一般來說,系統(tǒng)與繪圖程序之間的信息交換是由圖形設(shè)備接口(Graphics Device Interface,GDI)實(shí)現(xiàn)的,在wxpython中,通過device context(DC)對(duì)象來實(shí)現(xiàn)GDI的功能。
DC對(duì)象的創(chuàng)建非常簡(jiǎn)單,只需引用wx.PaintDC即可,而后則可通過dc來設(shè)置畫筆dc.SetPen,有了畫筆,就可以進(jìn)行圖形繪制了。于是,我們?cè)倏紤]到圖形的屬性,包括形狀、顏色與邊框等,更細(xì)致地說,是圖形形狀、填充顏色、邊框類型、邊框顏色。
我們可以通過一個(gè)矩形的例子來說明:

上面的窗口由如下代碼實(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()
首先,通過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)制值的組合,從而定義畫筆顏色。除了字符串的表示方法之外,還可以通過引用標(biāo)準(zhǔn)顏色庫(kù)或者調(diào)用wx.Colour()來對(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:無邊框
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:無填充
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)文章
Python實(shí)現(xiàn)多進(jìn)程之間共享變量
Python多線程和多進(jìn)程之間共享變量的方法有所不同,多線程可以直接使用global變量,而多進(jìn)程則需要使用multiprocessing庫(kù)中的Value、Array、Queue等或Manager模塊,Pool進(jìn)程池中進(jìn)程間共享變量時(shí),必須使用Manager模塊,在共享list時(shí),不能直接賦值2024-11-11
TensorFlow通過文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn)
今天小編就為大家分享一篇TensorFlow通過文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
jupyter 中文亂碼設(shè)置編碼格式 避免控制臺(tái)輸出的解決
這篇文章主要介紹了jupyter 中文亂碼設(shè)置編碼格式 避免控制臺(tái)輸出的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python中連通域分割Two-Pass算法的原理與實(shí)現(xiàn)詳解
兩遍掃描法(?Two-Pass?),正如其名,指的就是通過掃描兩遍圖像,將圖像中存在的所有連通域找出并標(biāo)記,本文將詳細(xì)介紹Two-Pass算法的原理與實(shí)現(xiàn),需要的可以參考下2023-12-12
Python創(chuàng)建普通菜單示例【基于win32ui模塊】
這篇文章主要介紹了Python創(chuàng)建普通菜單,結(jié)合實(shí)例形式分析了Python基于win32ui模塊創(chuàng)建普通菜單及添加菜單項(xiàng)的相關(guān)操作技巧,并附帶說明了win32ui模塊的安裝命令,需要的朋友可以參考下2018-05-05
基于Python實(shí)現(xiàn)一個(gè)PDF特殊字體提取工具
在PDF文檔處理場(chǎng)景中,我們常常需要針對(duì)特定格式的文本內(nèi)容進(jìn)行提取分析,本文介紹的"PDF特殊字體提取器"是一款基于Python開發(fā)的桌面應(yīng)用程序感興趣的小伙伴跟著小編一起來看看吧2025-03-03
一小時(shí)學(xué)會(huì)TensorFlow2之大幅提高模型準(zhǔn)確率
這篇文章主要介紹了TensorFlow2之大幅提高模型準(zhǔn)確率,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09

