0

アニメーションイベントで長い絵を縦にスクロールするものを作成QPropertyAnimationして接続しました。SonogramWidget「長い画像」は、1024x128 の事前に計算された 100 個の QPixmap オブジェクトで構成され、垂直方向に次々と配置されます。で表示されましSonogramWidget::paintEvent()QPainter。描画手順QPixmapウィジェットの高さと現在の垂直方向のオフセットを考慮して、一度にすべてをペイントするのではなく、それらのみを表示します。QPixmap画像を表示する最速の方法であるため、CPU はほとんど無料です。100 個すべてQPixmapsが事前に計算されてメモリに保存されるため、スクロール中に大きな計算はありません。

奇妙な効果が見られます: 脈動する動き: 1 秒に 2 回、画像全体がわずかにスピードアップし、通常の動きよりも 1..2 ピクセル速く動きます。Qt Animation Framework を単一の 60 fps QTimer に置き換えて、その SLOT で画像をスクロールすると、同じ効果が得られます。

ビデオ: http://www.youtube.com/watch?v=KRk_LNd7EBg#t=8 (00:08 から見てください。私の Firefox では、ビデオの再生自体にチョッピングが追加されています。Google Chrome では、ビデオの再生がはるかに優れています)。

Linux と Windows のビルドでも同じ効果が見られます。

解決策 私は問題を理解しました:「チョッピング」はバグではなく、機能でした!これは整数計算の機能であるため17、16、16、16、16、16、16、16、16、16、16、16 17、... .

4

1 に答える 1

0

paintEvent次の assert を追加します。

Q_ASSERT(m_animation->currentValue() == m_animatedPropertyValue);

currentValue()トリガーされた場合は、プロパティ値の代わりに使用する必要があることがわかります。これは事実かもしれません。お知らせ下さい。

于 2013-08-30T21:29:41.800 に答える