我有一個操作鼠標事件處理程序中的對象的畫布。修改對象之後,我想觸發相同Canvas的OnPaint()事件來顯示(重新渲染)所做的更改。什麼是正確的方法來做到這一點?它不會讓我直接調用OnPaint()。另外,從某種意義上來說,是從另一個事件觸發「錯誤」的事件,或者可能導致麻煩?在wxPython畫布中強制繪製
3
A
回答
3
我只需調用self.Refresh()或者RefreshRect()並傳遞需要重繪的區域。
1
我試過了Mike.Driscoll建議的self.refresh()。這部分工作。我使用鼠標事件移動自己的對象,然後重新繪製圖像 - 渲染我的對象。所以鼠標事件正在更新座標,並且重繪正在更新顯示。問題在於refresh()似乎被稱爲延遲或者比鼠標事件的優先級低。刷新()因此產生波濤洶涌的顯示。
因爲我使用通過wxDemo用於滾動區緩衝顯示,我從Paint事件以下行:
dc = wx.BufferedPaintDC(self, self.buffer, wx.BUFFER_VIRTUAL_AREA)
而且叫我與DC繪圖功能從鼠標事件處理程序中。完成後,dc被釋放並且(根據演示中的註釋)被複制到屏幕上。以前我不清楚Paint事件是如何處理DC的,所以我試圖調用事件。事實證明,你可以使用該DC,並從鼠標事件內部渲染。這會導致我的自定義繪製對象的平滑拖動。
相關問題
- 1. WPF強制重繪畫布
- 2. 如何在畫布上繪製畫布
- 3. HTML5畫布繪製
- 4. 繪製到畫布
- 5. Matplotlib畫布繪製
- 6. 在畫布上繪製ArcTo
- 7. 繪製在畫布上
- 8. 在畫布上繪製
- 9. 在子畫布上繪製
- 10. 在Scala.js上繪製畫布
- 11. 在畫布上繪製SVG
- 12. 在控制檯上繪製HTML5畫布
- 13. 強制畫布更新
- 14. 在循環中繪製到畫布
- 15. 在SurfaceView中繪製多個畫布
- 16. 在畫布中心繪製圓圈
- 17. Android Views在畫布中繪製
- 18. Java:如何在畫布中繪製?
- 19. 在畫布中間繪製圖像
- 20. 從舊畫布繪製 - Android
- 21. 畫布繪製效果
- 22. 繪製畫布到疊加
- 23. 畫布繪製錯誤
- 24. HTML5畫布繪製圖像
- 25. Javascript畫布繪製問題
- 26. html 5畫布繪製慢!
- 27. HTML5畫布繪製拖放
- 28. 用畫布繪製文字
- 29. Android多畫布。繪製
- 30. 畫布 - 繪製時間
張貼後,我發現並嘗試了。這正是我以爲我在尋找的東西。但是,當拖動我自己的一個對象時,它非常不穩定。看起來,refresh()只排隊重繪事件,但這可能不會發生一段時間 - 特別是在處理鼠標移動時。好的嘗試+1。 – phkahler
通常,當人們提到wxPython郵件列表上的東西不連貫時,他們建議使用雙緩衝來做。 –
是的,我正在使用一個屏幕位圖。這不是那種波濤洶涌的。即使這樣,情況也是非常不連貫的。我很清楚重繪不是經常發生。沒有閃爍,更新是直接的,但很少。 – phkahler