網(wǎng)上有很多關(guān)于無(wú)卡pos機(jī)元素, GDI基本元素之畫筆Pen的知識(shí),也有很多人為大家解答關(guān)于無(wú)卡pos機(jī)元素的問(wèn)題,今天pos機(jī)之家(www.shineka.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
無(wú)卡pos機(jī)元素
實(shí)戰(zhàn)wxPython系列-057
wx.Pen是一個(gè)基本的圖形對(duì)象。用于繪制矩形、橢圓、多邊形或其他形狀的直線、曲線和輪廓。
一、wx.Pen簡(jiǎn)介
畫筆具有樣式、寬度、畫刷、筆帽樣式和連接樣式等屬性。畫筆的樣式Style定義了線的樣式。筆帽樣式Cap定義了使用wx.PaintDC繪制的線的末端;連接樣式Join則定義了兩條線如何連接起來(lái)。畫筆寬度width="360px",height="auto" />
wx.Pen的常用方法:
GetCap(self):返回筆帽樣式,可以是CAP_ROUND, cap_projection和CAP_BUTT之一。默認(rèn)值是CAP_ROUND。GetColour(self):返回畫筆的顏色。GetJoin(self):返回畫筆連接樣式,可以是JOIN_BEVEL, JOIN_ROUND和JOIN_MITER之一。默認(rèn)值是JOIN_ROUND。GetStyle(self):返回畫筆線條樣式。Getwidth="360px",height="auto" />(self):返回畫筆寬度。SetCap(self, capStyle):設(shè)置筆帽樣式,可以是CAP_ROUND, cap_projection和CAP_BUTT之一。默認(rèn)值是CAP_ROUND。SetColour (self, colour):設(shè)置畫筆的顏色。SetJoin(self, join_style):設(shè)置畫筆連接樣式,可以是JOIN_BEVEL, JOIN_ROUND和JOIN_MITER之一。默認(rèn)值是JOIN_ROUND。SetStyle(self, style):設(shè)置畫筆線條樣式。Setwidth="360px",height="auto" />(self, width="360px",height="auto" />):設(shè)置畫筆寬度。二、wx.Pen線條樣式
畫筆支持多種線條樣式:
wx.PENSTYLE_SOLID:平滑實(shí)線wx.PENSTYLE_DOT:點(diǎn)虛線wx.PENSTYLE_LONG_DASH:長(zhǎng)虛線wx.PENSTYLE_SHORT_DASH:短虛線。wx.PENSTYLE_DOT_DASH:短線和點(diǎn)間隔的虛線。wx.PENSTYLE_USER_DASH:用戶自定義的虛線樣式。wx.PENSTYLE_TRANSPARENT:透明,實(shí)際上沒(méi)有線。圖1:wx.Pen線條樣式示意圖
#畫筆(wx.Pen)import wxclass SamplePen(wx.Frame): def __init__(self, *args, **kw): super(SamplePen, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("實(shí)戰(zhàn)wxPython: GDI-畫筆") self.SetSize(400, 240) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Centre() def OnPaint(self, e): dc = wx.PaintDC(self) dc.SetPen(wx.Pen('#4c4c4c', 1, wx.PENSTYLE_SOLID)) dc.DrawRectangle(30, 15, 90, 60) dc.SetPen(wx.Pen('#4c4c4c', 1, wx.PENSTYLE_DOT)) dc.DrawRectangle(150, 15, 90, 60) dc.SetPen(wx.Pen('#4c4c4c', 1, wx.PENSTYLE_LONG_DASH)) dc.DrawRectangle(270, 15, 90, 60) dc.SetPen(wx.Pen('#4c4c4c', 1, wx.PENSTYLE_SHORT_DASH)) dc.DrawRectangle(30, 105, 90, 60) dc.SetPen(wx.Pen('#4c4c4c', 1, wx.PENSTYLE_DOT_DASH)) dc.DrawRectangle(150, 105, 90, 60) dc.SetPen(wx.Pen('#4c4c4c', 1, wx.PENSTYLE_TRANSPARENT)) dc.DrawRectangle(270, 105, 90, 60)def main(): app = wx.App() sample = SamplePen(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()
上面的示例演示了幾種畫筆樣式。
圖2:wx.Pen畫筆樣式演示
三、連接(Join)和筆帽(Cap)樣式
畫筆還有兩個(gè)附加樣式參數(shù),連接(join)樣式和筆帽(cap)樣式。連接樣式定義了兩條線連接時(shí)的樣式,樣式僅適用于寬線的情況(即線寬大于等于1的時(shí)候)。
連接(join)樣式有以下幾種:
wx.JOIN_MITER。wx.JOIN_BEVEL。wx.JOIN_ROUND。當(dāng)使用wx.JOIN_MITER時(shí),線的外緣被擴(kuò)展。它們以一個(gè)角度相遇,這個(gè)區(qū)域被填滿。在wx.JOIN_BEVEL中,兩條線之間的三角形缺口被填充。在wx.JOIN_ROUND中,兩條線之間的圓弧被填充??梢詤⒖枷旅鎴D示來(lái)理解這幾種連接樣式的細(xì)節(jié)。
圖3:連接樣式示意圖
筆帽(cap)樣式有以下幾種:
wx.CAP_ROUNDwx.CAP_PROJECTINGwx.CAP_BUTTwx.CAP_ROUND繪制圓的結(jié)尾。wx.CAP_PROJECTING和wx.CAP_BUTT繪制正方形末端。它們之間的區(qū)別是wx.CAP_PROJECTING將擴(kuò)展到超出終點(diǎn)的一半行長(zhǎng)。wx.CAP_ROUND也將擴(kuò)展到端點(diǎn)之外。可以參考下面圖示來(lái)理解這幾種筆帽樣式的細(xì)節(jié)。
圖4:筆帽樣式示意圖
#畫筆(wx.Pen)import wximport mathclass SampleJoinsCaps(wx.Frame): def __init__(self, *args, **kw): super(SampleJoinsCaps, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("實(shí)戰(zhàn)wxPython: GDI-筆帽和連接樣式") self.SetSize(400, 300) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Centre() def OnPaint(self, e): dc = wx.PaintDC(self) pen = wx.Pen('#4c4c4c', 10, wx.SOLID) pen.SetJoin(wx.JOIN_MITER) dc.SetPen(pen) self.DrawPentagram(dc, 60, 60) pen.SetJoin(wx.JOIN_BEVEL) dc.SetPen(pen) self.DrawPentagram(dc, 180, 60) pen.SetJoin(wx.JOIN_ROUND) dc.SetPen(pen) self.DrawPentagram(dc, 300, 60) pen.SetCap(wx.CAP_BUTT) dc.SetPen(pen) dc.DrawLine(30, 150, 150, 150) pen.SetCap(wx.CAP_PROJECTING) dc.SetPen(pen) dc.DrawLine(30, 190, 150, 190) pen.SetCap(wx.CAP_ROUND) dc.SetPen(pen) dc.DrawLine(30, 230, 150, 230) pen2 = wx.Pen('#4c4c4c', 1, wx.SOLID) dc.SetPen(pen2) dc.DrawLine(30, 130, 30, 250) dc.DrawLine(150, 130, 150, 250) dc.DrawLine(155, 130, 155, 250) def DrawPentagram(self, dc, pos_x, pos_y): #繪制五角星 #添加一個(gè)多邊形(五角星) #外點(diǎn):x=Rcos(72°*k) y=Rsin(72°*k) k=0,1,2,3,4 #內(nèi)點(diǎn):r=Rsin18°/sin36° x=rcos(72°*k+36°) y=rsin(72°*k+36°) k=0,1,2,3,4 deg_18 = 18 * math.pi / 180 deg_36 = 36 * math.pi / 180 deg_72 = 72 * math.pi / 180 r_out = 50 #半徑 r_inner = r_out * math.sin(deg_18) / math.sin(deg_36) polygon_points = [] for i in range(5): #外點(diǎn) out_angle = deg_72 * i - deg_18 polygon_points.append(wx.Point(r_out * math.cos(out_angle), r_out * math.sin(out_angle))) #外點(diǎn) in_angle = deg_72 * i + deg_18 polygon_points.append(wx.Point(r_inner * math.cos(in_angle), r_inner * math.sin(in_angle))) dc.DrawPolygon(polygon_points, pos_x, pos_y)def main(): app = wx.App() sample = SampleJoinsCaps(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()
上面的代碼,繪制三個(gè)五角星演示三種不同的筆帽效果,窗口下半部分則展示了連接樣式的區(qū)別。
圖5:Cap和Join效果演示
四、本文知識(shí)點(diǎn)
了解畫筆wx.Pen的基本用法。了解和使用畫筆的樣式。了解和使用畫筆的連接和筆帽樣式。前一篇:wxPython - GDI基本元素之顏色Colour
歡迎關(guān)注,評(píng)論,收藏,點(diǎn)贊,和轉(zhuǎn)發(fā)。
以上就是關(guān)于無(wú)卡pos機(jī)元素, GDI基本元素之畫筆Pen的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于無(wú)卡pos機(jī)元素的知識(shí),希望能夠幫助到大家!
