デフォルトでアニメーションをすると、カクカクする場合があります。
また、DaraGridで大量データでも動作が遅くなります。
そのような場合は、レンダリングの仕組みを調べて、パラメータ設定などで
対応することができます。
例えば、アニメーションでは、Imageの滲みを解消できるようである。
Silverlightもできるのか、調べてみたところ、残念ながら、できるものとできないものがあるようです。
いくつかピックアップしてみました。
(1) デバイスに依存しないピクセル単位(dpi)でのレンダリングを行っている(Pixel Snapping)
・WPFでは、UIElement.SnapsToDevicePixelsで改善できる様子。
しかし、Silverlightにはこのパラメータがない
(2) アニメーションは0.1秒で行っている(レンダリング)
(3) CPUとGPUでのレンダリングが可能
SilverlightでGPUを使ったアニメーションに変更したら、滲みが改善できました。
ただし、Macはうまくできませんんでした。
どうやら、UI スレッドの停止がアニメーションを停止させないよう、アニメーションを GPU にキャッシュしてしているようです。
【SilverlightでのGPU使用方法】
・HTML以下記述
<param name="EnableGPUAcceleration" value="true" />
・GUPを使用するUIElementにCacheMode="BitmapCache"を追加
例)
<TextBlock x:Name="tbkTest" Width="50" Height="20" VerticalAlignment="Top" HorizontalAlignment="Right"
Text="TA ブログ" FontSize="10" CacheMode="BitmapCache">
(4)RederOptionを使用する・ベクトル描画は、WPFでアンチエイリアシングを無効にする
無効にするには、RenderOptions.EdgeMode="Aliased" を使います
・画像は、RenderOptions.BitmapScalingMode="NearestNeighbor"にすることです。すると最近点サンプリングをするため、ボケはなくなります。
もし、Siverlightのアニメーションで滲み(カクカクアニメーション)改善したい場合は、参考にしてください。
【参考URL】
http://msdn.microsoft.com/ja-jp/library/ms748373(v=vs.110).aspx
http://www.codeproject.com/Articles/784529/Solutions-for-WPF-Performance-Issue
http://msdn.microsoft.com/ja-jp/library/vstudio/aa970908(v=vs.90).aspx
http://news.mynavi.jp/column/silverlight/015/
http://blogs.msdn.com/b/hiroyuk/archive/2011/06/21/10177206.aspx
http://msdn.microsoft.com/ja-jp/library/bb613591(v=vs.110).aspx
0 件のコメント:
コメントを投稿