Trying to build a marquee control with smooth text animation. Current efforts include:
But the animation is still choppy and resource intensive (2-10% CPU).
Test code used in default wpf window which I assume should produce a smooth animation:
<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>
Checklist:
Tested on:
Any ideas (or better yet code example)?
From the responses it seems this is not a wpf issue (other marquee controls work fine for others but not for me), nut I'm getting the same issues on every machine I tested this on.
Your animation will be handled entirely at the MilCore layer if:
Try using a DoubleAnimation-animated TranslateTransform for a RenderTransform on a TextBlock that is a direct child of a Window with default settings.
If this is still slow, there is something slow about your Direct3D system because managed code is not involved at all and MilCore's calls are very simple, but
If it works smoothly and efficiently, incrementally change it to your poorly-performing code to see what change causes the slowdown.
Given your response to Jobi Joy's answer I would suspect the problem is somewhere in your hardware or Direct3D setup, but the only way to find out is to test it.