スムーズなテキストアニメーションでマーキーコントロールを構築しようとしています。現在の取り組みは次のとおりです。
- 変換変換の使用
- Canvasの依存関係プロパティ(左、右)でのアニメーションの使用
- カスタム依存関係プロパティ(Point)でのアニメーションの使用、および描画ビジュアル(formattedtext)の使用
- CompositionTarget.Renderingを使用する
ただし、アニメーションは依然として途切れ途切れでリソースを大量に消費します(2〜10%のCPU)。
デフォルトのwpfウィンドウで使用されるテストコードは、スムーズなアニメーションを生成するはずです。
<TextBlock x:Name="_box" FontSize="64" CacheMode="BitmapCache" Text="lorem ipsum">
<TextBlock.RenderTransform>
<TranslateTransform x:Name="AnimatedTranslateTransform" X="0" Y="0" />
</TextBlock.RenderTransform>
<TextBlock.Triggers>
<EventTrigger RoutedEvent="TextBlock.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="AnimatedTranslateTransform"
Storyboard.TargetProperty="X"
From="-300" To="300" Duration="0:0:5"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
チェックリスト:
- ソフトウェアレンダリングが行われていないことを確認しました(msパフォーマンスツールとRenderCapability.Tierのチェック)
- 想像できるあらゆるオブジェクトに対してフリーズを呼び出す
- ビットマップ効果と透明度を無効にしました
- そこにあるすべてのマーキーコントロールをチェックしました(同じ問題)
テスト済み:
- CPU:Intellコア2デュオ(T6600)@ 2.2Ghz
- RAM:4GB
- GPU:NVidia GeForce 9600M GS(最新のドライバー)
- OS:Windows 7(64ビット)
何かアイデア(またはもっと良いのはコード例)?
回答から、これはwpfの問題ではないようです(他のマーキーコントロールは他の人には問題なく機能しますが、私には機能しません)。これをテストしたすべてのマシンで同じ問題が発生しています。