我知道這個任務中有幾百個例子,儘管我沒有設法將這些例子應用於我的具體問題。正如你可以在下面的代碼中看到的,我試圖在位圖「self.image」上繪製一個多邊形。此代碼在MS Windows上工作得非常好。在Linux上,這段代碼不會繪製我的多邊形。使用wxpython繪製位圖(跨平臺)
我試圖根據這個How to draw text in a bitmap using wxpython? 玩不同的「dcs」像MemoryDC,但結果是一樣的。
我的問題是: 爲什麼我的代碼在Linux上失敗?爲什麼這個工作在MS Windows上? (有點偏離主題)爲什麼人們經常在綁定到EVT_PAINT的OnPaint方法中專門繪製PaintDC?
類屬性:
self.dc = wx.ClientDC(self.image)
self.dc.SetPen(wx.Pen(colour='red', width=4, style=wx.SOLID))
self.polygon = list()
此方法被調用時,我想要開始繪圖:
def start_drawing(self):
self.image.Bind(event=wx.EVT_LEFT_DOWN, handler=self.draw_polygon)
self.dc.BeginDrawing()
該方法處理從以上的結合:
def draw_polygon(self, event):
self.polygon.append(event.GetPositionTuple())
if len(self.polygon) > 1:
self.dc.DrawLines(points=self.polygon)