無卡pos機元素, GDI基本元素之畫筆Pen

 新聞資訊2  |   2023-07-04 09:22  |  投稿人:pos機之家

網上有很多關于無卡pos機元素, GDI基本元素之畫筆Pen的知識,也有很多人為大家解答關于無卡pos機元素的問題,今天pos機之家(www.tonybus.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、無卡pos機元素

無卡pos機元素

實戰wxPython系列-057

wx.Pen是一個基本的圖形對象。用于繪制矩形、橢圓、多邊形或其他形狀的直線、曲線和輪廓。

一、wx.Pen簡介

畫筆具有樣式、寬度、畫刷、筆帽樣式和連接樣式等屬性。畫筆的樣式Style定義了線的樣式。筆帽樣式Cap定義了使用wx.PaintDC繪制的線的末端;連接樣式Join則定義了兩條線如何連接起來。畫筆寬度width="360px",height="auto" />

wx.Pen的常用方法

GetCap(self):返回筆帽樣式,可以是CAP_ROUND, cap_projection和CAP_BUTT之一。默認值是CAP_ROUND。GetColour(self):返回畫筆的顏色。GetJoin(self):返回畫筆連接樣式,可以是JOIN_BEVEL, JOIN_ROUND和JOIN_MITER之一。默認值是JOIN_ROUND。GetStyle(self):返回畫筆線條樣式。Getwidth="360px",height="auto" />

(self):返回畫筆寬度。SetCap(self, capStyle):設置筆帽樣式,可以是CAP_ROUND, cap_projection和CAP_BUTT之一。默認值是CAP_ROUND。SetColour (self, colour):設置畫筆的顏色。SetJoin(self, join_style):設置畫筆連接樣式,可以是JOIN_BEVEL, JOIN_ROUND和JOIN_MITER之一。默認值是JOIN_ROUND。SetStyle(self, style):設置畫筆線條樣式。Setwidth="360px",height="auto" />

(self, width="360px",height="auto" />

):設置畫筆寬度。

二、wx.Pen線條樣式

畫筆支持多種線條樣式:

wx.PENSTYLE_SOLID:平滑實線wx.PENSTYLE_DOT:點虛線wx.PENSTYLE_LONG_DASH:長虛線wx.PENSTYLE_SHORT_DASH:短虛線。wx.PENSTYLE_DOT_DASH:短線和點間隔的虛線。wx.PENSTYLE_USER_DASH:用戶自定義的虛線樣式。wx.PENSTYLE_TRANSPARENT:透明,實際上沒有線。

圖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("實戰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)樣式

畫筆還有兩個附加樣式參數,連接(join)樣式和筆帽(cap)樣式。連接樣式定義了兩條線連接時的樣式,樣式僅適用于寬線的情況(即線寬大于等于1的時候)。

連接(join)樣式有以下幾種:

wx.JOIN_MITER。wx.JOIN_BEVEL。wx.JOIN_ROUND。

當使用wx.JOIN_MITER時,線的外緣被擴展。它們以一個角度相遇,這個區域被填滿。在wx.JOIN_BEVEL中,兩條線之間的三角形缺口被填充。在wx.JOIN_ROUND中,兩條線之間的圓弧被填充。可以參考下面圖示來理解這幾種連接樣式的細節。

圖3:連接樣式示意圖

筆帽(cap)樣式有以下幾種:

wx.CAP_ROUNDwx.CAP_PROJECTINGwx.CAP_BUTT

wx.CAP_ROUND繪制圓的結尾。wx.CAP_PROJECTING和wx.CAP_BUTT繪制正方形末端。它們之間的區別是wx.CAP_PROJECTING將擴展到超出終點的一半行長。wx.CAP_ROUND也將擴展到端點之外??梢詤⒖枷旅鎴D示來理解這幾種筆帽樣式的細節。

圖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("實戰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): #繪制五角星 #添加一個多邊形(五角星) #外點:x=Rcos(72°*k) y=Rsin(72°*k) k=0,1,2,3,4 #內點: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): #外點 out_angle = deg_72 * i - deg_18 polygon_points.append(wx.Point(r_out * math.cos(out_angle), r_out * math.sin(out_angle))) #外點 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()

上面的代碼,繪制三個五角星演示三種不同的筆帽效果,窗口下半部分則展示了連接樣式的區別。

圖5:Cap和Join效果演示

四、本文知識點

了解畫筆wx.Pen的基本用法。了解和使用畫筆的樣式。了解和使用畫筆的連接和筆帽樣式。

前一篇:wxPython - GDI基本元素之顏色Colour

歡迎關注,評論,收藏,點贊,和轉發。

以上就是關于無卡pos機元素, GDI基本元素之畫筆Pen的知識,后面我們會繼續為大家整理關于無卡pos機元素的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.tonybus.com/newsone/79421.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。