我有一个Canvas,它在鼠标事件处理程序中操作对象。修改完对象后,我想触发同一个Canvas的OnPaint()事件以显示(重新渲染)更改内容。正确的方法是什么?直接调用OnPaint()不起作用。此外,从另一个事件触发事件是否“错误”或可能导致问题?
我尝试了Mike Driscoll建议的self.refresh()。那部分地起作用了。我使用鼠标事件移动自己的对象,然后重新绘制图像-渲染我的对象。因此,鼠标事件更新坐标,repaint更新显示。问题在于refresh()似乎是惰性调用或者优先级低于鼠标事件。因此,refresh()会产生不流畅的显示。
由于我正在使用wxDemo for Scrolled Area的缓冲显示,所以我从Paint事件中取出了以下行:
dc = wx.BufferedPaintDC(self, self.buffer, wx.BUFFER_VIRTUAL_AREA)