题
试图建立一个框控制与流畅的文本动画。目前的努力,包括:
- 使用翻译变换
- 使用动画画布上的依赖性(左,右)
- 使用动画上的定义依赖酒店(指)和使用绘图的视觉效果(formattedtext)
- 使用CompositionTarget.渲染
但画中仍然是波涛汹涌的和资源密集(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.层级)
- 呼吁冻结任何可以想象的对象
- 残疾人的任何位的效果和透明度
- 检查了所有帐篷控制那里(同样的问题)
测试:
- CPU:智核心2duo(T6600)@2.2Ghz
- RAM:4GB
- GPU:选择的一个主要9600M GS(最新的驱动程序)
- 操作系统:Windows7(64)
任何想法(或者更好的代码的例子)?
从答复中看来这不是一个wpf问题(其他框控制工作的现用于其他人,但不是对我来说),坚果我得到的同样问题上的每一个机器我测试这个。
解决方案
希望这可以帮助你- http://jobijoy.blogspot.com/2008/08/silverlight-marquee-control.html
和WPF版本也可以发现 在这里,
其他提示
你的动画处理完全在MilCore层,如果:
- 你TranslateTransform是站(不LayoutTransform),
- 您用一个简单的动画诸如DoubleAnimation,
- 你对象没有剪报或透明度的计算
尝试使用DoubleAnimation动画TranslateTransform为一个站在一个文本块,是一个直接的儿童的一个窗口,默认设置。
如果这仍然是缓慢的,有一些缓慢的关于你的Direct3D系统,因为托管的代码没有涉及的所有和MilCore的呼吁是非常简单,但是
如果工作顺利和有效地逐步改变它对您的执行效果不佳的代码看看有什么变化会导致经济放缓。
给你的回应Jobi快乐的回答,我就会怀疑该问题是什么地方,在你的硬件或Direct3D设置,但是唯一的方法,以找出是进行测试。
如果您使用的是WPF4.0,试图设置的 CacheMode="BitmapCache"
(在XAML)的元素,你们的动画,在这种情况下,可能是一个 TextBlock
.
不隶属于 StackOverflow