使用WPF平滑文本动画(Marquee)

Gor*_*ran 6 wpf animation marquee

尝试使用流畅的文本动画构建选取框控件.目前的努力包括:

  • 使用翻译变换
  • 在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>
Run Code Online (Sandbox Code Playgroud)

清单:

  • 确认没有软件渲染(ms性能工具和检查RenderCapability.Tier)
  • 调用冻结任何可以想象的对象
  • 禁用任何位图效果和透明度
  • 检查了那里的所有选框控件(同样的问题)

测试:

  • CPU:Intell core 2 duo(T6600)@ 2.2Ghz
  • 内存:4GB
  • GPU:NVidia GeForce 9600M GS(最新驱动程序)
  • 操作系统:Windows 7(64位)

任何想法(或更好的代码示例)?

从响应来看,这似乎不是一个wpf问题(其他选框控件对其他人来说工作正常,但不适合我),坚果我在我测试过的每台机器上都遇到了同样的问题.