我有一個類,它顯示了QWidget中的audiofiles的波形數據(請參閱下面的小部件的屏幕截圖,那時我仍然使用漸變,這導致了糟糕的性能)。qpainter繪畫替代品(在Mac上表現糟糕)
的音頻數據在的paintEvent繪直接使用多次調用QPainter::drawLine
微件(呼叫的最小量QWidget::drawLine
相當於插件=>至少一條線的寬度對於每個x座標)。 雖然這種方法在Windows上運行得非常好(全屏幕中的paintEvent大約需要4ms),但是當程序在MacOS下運行時,性能會降低4-5倍。
繪畫的性能對於顯示數據的流體滾動很重要。
所以我的問題是,有沒有人知道一個更快的替代QPainter.drawLine繪製線(平臺相關的解決方案可能是好的,只要他們可以在paintEvent中使用),或有一種方法來加速滾動,某種緩衝等?
我們正在使用qt 4.4,我已經嘗試先在QPixmap上繪製數據,然後將小部件繪製到小部件上,但加速效果並不理想(QPainter :: drawLine在繪製像素圖時並不明顯) – smerlin 2011-05-22 18:06:28
我記得QPixmap與QImage的不同之處在於QPixmap使用平臺「加速」後端。在OS X中,這意味着它仍然是Core Graphics。使用QImage將確保您使用的是軟件渲染器。 – 2011-05-22 20:40:49
@smerlin QPixmap針對在屏幕上顯示圖像進行了優化,而QImage針對I/O進行了優化。如果你使用QPixmap繪製線條,那麼它會變慢。 – Arlen 2011-05-24 04:53:03