我是wxpython的新手。我想绘制一个自定义形状,完成后,形状可以填充任何或选定的颜色(SetBrush)。
任何人都可以帮我解释示例代码。它们只画了5行,但我不能填充这个形状或任何其他自定义形状的颜色。
答案 0 :(得分:0)
你是对的,SetBrush是做到这一点的关键。你画线时是否使用过DrawLines?如果是这样,您可以使用DrawPolygon。这将关闭多边形并用刷子颜色填充内部。笔颜色用于轮廓。这是我在Windows上用wxpython 2.8编写和测试的最小例子。
SetDoubleBuffered在这里可能并不重要,但这是我的默认设置,以防止闪烁。
您可以在the documentation for wx.DC中找到许多其他有用的绘图方法。
import wx
class myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, title='Test', size=(200,200))
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.SetDoubleBuffered(True)
self.Show()
def OnPaint(self, event):
dc = wx.BufferedPaintDC(self)
dc.Clear()
dc.BeginDrawing()
dc.SetBrush(wx.Brush(wx.RED, wx.SOLID))
# dc.SetBrush(wx.Brush(wx.RED, wx.TRANSPARENT)) # when you dont want to fill
dc.SetPen(wx.Pen(wx.NamedColour('cyan'), 1))
#dc.DrawLines([(100,100), (120,100), (120,120), (100,120)]) # without fill, open end
dc.DrawPolygon([(100,100), (120,100), (120,120), (100,120)]) # closed, filled
dc.EndDrawing()
if __name__ == '__main__':
app = wx.PySimpleApp(0)
frame = myframe()
app.MainLoop()