2010-12-16 6 views
8

私はいくつかの非常にシンプルなアニメーション(テキストの移動、楕円の移動など)があり、フルスクリーン(1920x1080からタスクバーを引いたもの)で実行しているとWPF Performance Suiteはアニメーション全体で約50FPSの良好なフレームレートを報告します。 Dirty Rectは300 rect/s付近にあり、SWフレームは0〜4、HWフレームは3〜5です。ビデオメモリの使用量は約80 MBです。なぜアニメーションが乱れているのかを知るには?

WPF Performance screen shot

問題は、アニメーションの吃音ことを他のすべての0.5秒です。それは絶対に流動的ではありません:-(

私のマシンは2GBのメモリを搭載したGeForce GT 435を搭載した新しいDellノートパソコンのXPS 15です - ドライバは最新です(全画面で同じ現象が発生します。)だけでなく、私はそれは、ハードウェア関連しているとは思わないので)

私は吃音が消えるウィンドウを小さくした場合

スタッターは、アニメーションの最も簡単で発生 - 。でも、要素だけのカップルにより多くの要素を追加すると、より目立ちます。

原因この吃音?

私はそれを考えると、実際にフルスクリーンでスムーズに動作するWPFアニメーションは見ていません。これも可能ですか?

+0

あまりにも多く塗り替えているのでしょうか?私。 2つのフレームの間で変更されていないピクセルは、そうではなくてもダーティとしてマークされます。 –

+1

偉大な質問!テストとして、スタッターが継続するかどうかを確認するアニメーションコントロールを1つだけ残してみましたか?そうでない場合は、すべてのコントロールのデータを更新していますか?つまり、すべて同じスレッドになっていますか、タスク/パラレルメソッドを作成していますか? –

+0

>私はそれを考えると、フルスクリーンでスムーズに動くWPFアニメーションは見たことがありません。 Aha! WPFは非常に遅いです。複雑なUIをアニメートしたり、フレームレートを低くしたり、これらの問題を解決するWTFフレームワークを待つことができます。P –

答えて

1

パトリック、

私は答えがありません。私ができることは、何らかの連帯を提供することだけです。私はItemsControlをアニメーション化しようとしています。このコンセプトはとてもシンプルです。私はListViewがあり、ListViewには私はGridViewがあります。 GridView内の項目は、基になるリストがソートされるたびに、ある行から別の行にスムーズに移動したいので、たとえば、ソートされたリストはリスト内の値が変更されるとソートされたままになります。

私はこれに気がつきました。適度に複雑なコントロールのアニメーションは、CPUの豚です。吃音は、私がかなり確信しているのは、単にCPUが最大にされていることです(私は上記のダンプでCPUグラフを提供していないことに気付きました)。 CPUを50%前後に保ち、アニメーションは滑らかになり、75%を超えるとこれらの不具合が発生します。 まだ問題に取り組んでいますが、私のコードより深いと思います。

ドン

3

アニメーションに「最大フレームレート」を低く設定しようとしましたか?

<Storyboard Timeline.DesiredFrameRate="10"> 
    <!-- ....blah blah blah --> 
</Storyboard> 

は、あなたのアニメーションは、システムによって行われる計算の数にカスケード効果を持つことになります DesiredFrameRateを変更し、子供や親要素の大規模な再計算を引き起こしている場合。 また、 linkの「備考」のセクションを参照してください。それはなぜ/あなたがそれを使うべきかを説明します。

フレームレートを低く設定すると、吃音が修正される場合は、アニメーションの各フレームで必要な再計算量を制限するためにXAMLを単純化する必要があります(サイズ変更された子オブジェクトまたは親オブジェクトの数アニメーションによって行われたすべてのフレーム/変更によって表示されます。

WPF Performance Suite」もチェックしてください。あなたのWPFアプリケーションで何が起こっているのかを判断し、ウィンドウのどの部分が再描画されているのか、いつどのXAML要素のCPU使用量が表示されるのかを確認するのは素晴らしいツールセットです!

希望すると便利です。

0

私は同じような問題を抱えていましたが、私はプログラムを実行している間、ちょっとしたように見えました。ちょっとしたことに、Google Chromeを実行している間にシャットダウンし、それを修正したところ、スクロールが完全にスムーズになりました...

私のアドバイスは、インターネットブラウザが開いているかどうかで、問題。

関連する問題