sme*_*lin 8 c++ macos performance qt paint
我有一个类在QWidget中显示音频文件的波形数据(见下面小部件的屏幕截图,然后我仍然使用渐变,这导致性能不佳).
音频数据直接在widget上使用多次调用绘制在paintEvent中QPainter::drawLine
(最小调用量QWidget::drawLine
相当于widget的宽度=>每个x坐标至少有一行).虽然该方法在Windows上运行良好(全屏的paintEvent大约需要4毫秒),但在MacOS下运行程序时,性能会下降4-5倍.
绘画的性能对于显示数据的流体滚动很重要.
所以我的问题是,有没有人知道更快的QPainter.drawLine替代方案来绘制线条(平台相关的解决方案可能没问题,只要它们可以在paintEvent中使用),或者有没有办法加快滚动,某种缓冲等?
Qt的当前版本(4.7.x)使用Core Graphics后端进行绘制.你发现它有时很慢.在Windows上,它使用的软件渲染器具有非常好的性能.
我的建议是不要在你的油漆事件中直接在通过的画家上画画.相反,创建QImage
与窗口小部件绘制区域相同的大小并在其上绘制.这将使用更快的软件渲染器.然后QImage
在需要时将其绘制到画家身上.
归档时间: |
|
查看次数: |
3736 次 |
最近记录: |