我有一個win32應用程序,它是用C++開發的。應用程序使用基本形狀(矩形)在窗口上繪製一些東西。使用InvalidateRect每20ms(50hz)重新繪製窗口。所有的作品都很好,但圖畫閃爍。我如何防止閃爍?在C#中,我通常使用雙緩衝組件(如pictureBox),我怎麼能擺脫這在c + +中使用win32?繪圖不閃爍
Q
繪圖不閃爍
4
A
回答
4
5
您可以創建一個內存設備上下文,繪製這些形狀給它(就像你到窗口的設備上下文),然後在窗口無效時從窗口的設備上下文中blit。
在繪圖發生之前,您還需要禁用背景清除(適當處理WM_ERASEBKGND窗口消息)。
編輯:我偶然發現了一個關於GDI中無閃爍繪圖的非常詳盡的tutorial,它解釋了Windows繪圖的所有方面並附帶示例。
+0
非常漂亮的教程謝謝! – blejzz
+0
+1 WM_ERASEBKGND提示非常重要。當我錯了我的答案時,我忘記了這一點。 –
3
您也可以在C++中加倍使用緩衝區。
當您得到DC繪製到,您創建一個離屏位圖(CreateCompatibleBitmap)和一個內存DC(CreateCompatibleDC)。把你所有的繪畫都做到這個DC上。最後,從內存DC到實際DC執行BitBlt。
爲了提高性能,您可能需要緩存離屏位圖和DC,但請記住在窗口大小更改時重新創建它們。
相關問題
- 1. 重繪圖像閃爍()
- 2. 繪圖形狀和閃爍
- 3. Java2D繪圖是閃爍
- 4. C#重繪閃爍
- 5. 圖像不閃爍
- 6. Symfony OutputFormatterStyle「閃爍」不閃爍
- 7. c#winform繪製圖像閃爍
- 8. Android RecyclerView繪圖問題(閃爍)
- 9. HTML 5畫布圖像繪畫閃爍
- 10. HTML5 Canvas在繪圖上閃爍
- 11. 繪製無閃爍線
- 12. 重繪和閃爍問題
- 13. 停止閃爍/重繪
- 14. 圖形閃爍
- 15. 圖形閃爍
- 16. STM32F4探索板hal閃爍不閃爍
- 17. PhoneGap + jQuery =奇怪的重繪與onclick閃爍? (動畫不透明導致閃爍)
- 18. C#圖形閃爍
- 19. LWGJL。圖形閃爍
- 20. DataGridViewImageColumn,圖像閃爍
- 21. jquery圖片閃爍?
- 22. 閃爍或閃爍bgcolor
- 23. UIAlertViewController閃爍/閃爍簡要
- 24. 停止閃爍從閃爍
- 25. 如何以.Net形式繪製劇情圖而不閃爍?
- 26. 圖片框圖像閃爍
- 27. Arduino LED不閃爍
- 28. 在MFC中重繪時閃爍
- 29. 重繪帆布HTML5無閃爍
- 30. C#:繪畫時避免閃爍?
選擇此答案,因爲它是唯一的例子 – blejzz