很多同志在些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
