QT顯示如何減輕閃屏(雙緩沖和NoErase)


很多同志在些QT 程序后會遇見閃屏的問題, 有時速度非常快,但畢竟影響了顯示效果,如何做到減輕屏幕抖動或閃屏呢?
我曾試過如下的辦法:
1.使用雙緩沖。 比如我們在一個Widget里面繪多個圖的話, 先創建一個QPixmap對象 然后用QPainter在這個QPixmap對象上繪圖,最用后BitBlt 將數據copy到active painterDev上就可以了。
2.QWdiget 對象在重繪的時候選擇NoErase。 調用repaint(false)即可,  這樣可以防止在繪圖的時候 系統會先將整個Region 擦除,這樣也可以避免閃屏。 但這個還不足以 去除閃屏,因為系統自己也會調用repaint函數,可能他會erase 需要繪圖的QRegion區域, 因此要確保不擦除,需要在QWidget對象中設置WFlags: WRepaintNoErase 屬性。 在QT3中 好像直接通過SetWFlags不會起作用,需要在QWidget構造函數中傳入這個參數。
有人說或如果不擦除圖片 會不會畫面殘留上次的繪圖結果,  這個需要我們自己在繪圖的時候做清除,因為是在QPixmap上繪圖 並不影響系統中Active painterDev 所以 擦除不會引起屏幕閃爍。

http://blog.sina.com.cn/s/blog_668aae7801017gj9.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM