我创建QPropertyAnimation
并将它连接到我SonogramWidget
在动画事件上垂直滚动的长图片。“长图”由 100 个预先计算好的 QPixmap 对象组成,1024x128 一个接一个地垂直放置。他们显示SonogramWidget::paintEvent()
在QPainter
. 绘图过程不是QPixmap
一次全部绘制,而是仅对它们可见,考虑到小部件高度和当前垂直偏移。CPU 几乎是免费的,因为QPixmap
它是显示图片的最快方式。滚动过程中没有大的计算,因为所有的100QPixmaps
都是预先计算好的并存储在内存中。
我看到了奇怪的效果: 脉动运动:每秒 2 次整个图像略微加速,并且比通常的运动快 1..2 个像素。当我用单个 60 fps QTimer 替换 Qt Animation Framework 并在其 SLOT 中滚动图像时,效果相同。
视频:http ://www.youtube.com/watch?v=KRk_LNd7EBg#t= 8(从 00:08 开始观看;我的 Firefox 为视频播放本身添加了更多的切碎,谷歌浏览器播放视频更好)。
对于我的 Linux 和 Windows 版本,我看到了同样的效果。
解决方案
我发现了问题:“斩波”不是错误,而是一个功能!这是整数计算的一个特性,所以有时我们必须为动画设置不同的数字,例如:16,16,16,16,16,16, 17
,16,16,16,16,16 17
,... .