首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qpainter绘画替代方案(Mac上的性能很差)

qpainter绘画替代方案(Mac上的性能很差)
EN

Stack Overflow用户
提问于 2011-05-23 01:40:03
回答 3查看 4.1K关注 0票数 8

我有一个在QWidget中显示音频文件波形数据的类(参见下面的小工具截图,当时我仍然使用渐变,这会导致性能很差)。

音频数据是通过多次调用QPainter::drawLine直接在小部件的paintEvent中绘制的(对QWidget::drawLine的最小调用数量相当于小部件的宽度=>,每个x坐标至少一行)。虽然这种方法在Windows上运行得很好(全屏模式下的paintEvent大约需要4ms),但当程序在MacOS下运行时,性能要差4-5倍。

绘画的性能对于显示数据的流畅滚动非常重要。

所以我的问题是,有没有人知道一个更快的替代QPainter.drawLine来绘制线条(平台相关的解决方案可能是可以的,只要他们可以在paintEvent中使用),或者有一种方法来加快滚动,某种缓冲等?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-23 02:02:32

Qt的当前版本(4.7.x)使用Core Graphics后端进行绘制。正如你所发现的,它有时会很慢。在Windows上,它使用了一个性能非常好的软件渲染器。

我的建议是不要在paint事件中直接在传递的painter上进行绘制。相反,您可以创建一个与小部件绘制区域大小相同的QImage并在其上进行绘制。这将使用速度更快的软件渲染器。然后在需要时将QImage绘制到画笔上。

票数 5
EN

Stack Overflow用户

发布于 2011-05-23 04:46:54

如果你想画得很快,可以使用OpenGL和QGLWidget

票数 4
EN

Stack Overflow用户

发布于 2011-05-23 02:25:21

您可以构造一个QPainterPath并绘制它,而不是重复调用drawLine函数。此外,您可以缓存路径,因此在第一次绘制后速度会快得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6089642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档