【发布时间】:2011-03-01 10:39:50
【问题描述】:
尝试构建一个带有平滑文本动画的选取框控件。目前的努力包括:
- 使用平移变换
- 在 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 core 2 duo (T6600) @2.2Ghz
- 内存:4GB
- GPU:NVidia GeForce 9600M GS(最新驱动程序)
- 操作系统:Windows 7(64 位)
有什么想法(或更好的代码示例)吗?
从回复来看,这似乎不是 wpf 问题(其他选取框控件对其他人来说很好,但对我来说不是),但我在每台测试过的机器上都遇到了同样的问题。
【问题讨论】:
-
似乎有些电脑有问题。构建发布版本也有很大帮助。