【发布时间】:2012-10-17 04:10:54
【问题描述】:
我正在构建一个应用程序(在 Qt 中),其中包含一些动态图形(意味着快速刷新到新值),并从后台线程获取值。
我想要第一张图,它的细节很重要,以一个速度(100 Hz)刷新,其他 4 个图以较低的速度(10Hz)刷新。
问题是,当我以相同的速率(100 Hz)刷新它们时,应用程序无法处理它并且计算机卡住了,但是当刷新率不同时,第一个信号会在它上面出现伪像(与例如以 10Hz 的频率运行它们相比)。
工件呈波浪形(而不是直线,例如我得到一条“蛇”)。
关于为什么它有工件(我猜是渲染限制)以及可以做些什么的任何建议?
【问题讨论】:
-
你是如何“刷新”他们的 - 打电话给
update()?更新调用通过事件队列,多个相邻的updates()可能会被连接起来。更重要的是,当您的显示器不太可能在 60Hz 以上绘制时,尝试以 100Hz 绘制是没有意义的,并且人类不会注意到 50Hz 以上的任何变化 - 所以我只会绘制所有其他输入值。发布您所看到的人工制品的图片。 -
感谢 cmannet,“刷新”只是重新绘制整个内容。大约 50 赫兹,这就是我的想法,但如果我设置低于 60 赫兹,信号似乎已损坏,但也许我应该再次检查我的代码。上传它的图像有点问题,但想象一下一条直线,它有点螺旋而不是一条正确的线。
-
HelloWorld,你说的“只是重绘整个东西”是什么意思?如何触发paintEvent?
-
我正在使用从这里获取的特殊绘图小部件:workslikeclockwork.com/index.php/components/qt-plotting-widget
-
cmannett85:您对显示器刷新率的看法是正确的。刷新比显示器快是没有用的。但 50 Hz 绝不是人类视力的极限。可以清楚地看到例如 60 Hz 和 120 Hz 之间的差异。即使它与数据速率不匹配,我也会推荐 60 Hz 刷新率。应该为监视器绘制的每一帧更新图表。有些帧将有 1 个新样本,有些帧将有 2 个样本。在每一帧中,图表应该移动 1.67 (100/60) 个样本。这样,即使新数据量因帧而异,图表看起来也很平滑。