gpt4 book ai didi

python - 改进 wxPython OnPaint

转载 作者:行者123 更新时间:2023-11-28 18:40:40 25 4
gpt4 key购买 nike

我有以下wx.Window:

class SketchWindow(wx.Window):

def __init__(self, parent):
wx.Window.__init__(self, parent, -1)
self.SetBackgroundColour('White')
# Window event binding
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_IDLE, self.OnIdle)
# run
self.Run()

def OnPaint(self, evt):
self.DrawEntities(wx.PaintDC(self))

def DrawEntities(self, dc):
dc.SetPen(wx.Pen('Black', 1, wx.SOLID))
dc.SetBrush(wx.Brush('Green', wx.SOLID))
# draw all
for e in self.entities:
x, y = e.location
dc.DrawCircle(x, y, 4)

def OnIdle(self, event):
self.Refresh(False)

def Run(self):
# update self.entities ...
# call this method again later
wx.CallLater(50, self.Run)

我需要每 N 毫秒(在我的示例中为 50)在我的窗口上绘制多个圆圈 [0, 2000],在每一步中这些圆圈可能会更新它们的位置。

我写的方法有效(圆圈也消除了锯齿)但速度很慢。有没有办法改进我的解决方案?

最佳答案

我认为获得更好性能的基本思想是绘制到屏幕外的内存,然后将结果 blit 到屏幕。你可以使用 BufferedCanvas完成此操作(链接页面底部给出的示例)。

关于python - 改进 wxPython OnPaint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26550473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com