同じUserControlでアニメーションとMultiScaleImageコントロールを使用するにはどうすればよいですか?
MultiScaleImageとアニメーションを同じUserControlに配置すると、常に高いCPU使用率が得られることがわかりました。それはMultiScaleImageコントロールのバグですか?これがサンプルプロジェクトです。(グリッド、MultiScaleImageControl、およびフェードする長方形のみ)
なぜCPU使用率が高いのですか?アニメーションの再生中に、UserControlはLayoutUpdatedイベントを発生させ、MultiScaleImageはそのイベントをキャッチしてそれ自体を再描画します。したがって、MaxFrameRate = 60(デフォルト値)の場合、MultiScaleImageは毎秒約60回再描画され(MultiScaleImage.LayoutUpdatedは約60回起動されます)、CPU使用率が高くなります。
- MaxFrameRate = 10の場合、最大20%のCPU
- MaxFrameRate = 30の場合、最大40%のCPU
- MaxFrameRate = 60(デフォルト)の場合、最大85%のCPU
MultiScaleImageは、SizeChangedイベントでのみそのefを再描画(またはCPUを集中的に使用するものを再計算)するべきではありませんか?それ以外の場合、アニメーションを使用できないのに、なぜこのコントロールを使用するのですか?