如何在winrt中实现文本沿着圆形路径动画?

5
我正在尝试在Windows Store应用程序(使用C#)中沿着圆形路径动画文本。 虽然互联网上有一些关于如何在Silverlight和WPF中实现此目标的示例,但是在WinRT中这些示例都无法正常运行(例如缺少许多方法)。
在寻找解决方案时,我还发现了下面的Stackoverflow问题,但它仅适用于Windows 8.0而不是Windows 8.1,因此我无法使其正常工作。
是否有任何解决方案可以避免从头开始重新实现所有内容?

我认为这个链接提供了一个很好的LayoutPath替代方案,适用于Windows RT。虽然我还没有使用过,但是这只是一条评论。 - Chris W.
1
好的建议,我可能需要实现一些解决方案,使字母“逐个”在曲线上旋转,而不是整个TextBlock作为一个整体,但这仍然是一个很好的开始。谢谢。 - Dinis Vieira
如果你使用单个字母,那么就会变得容易得多,只需将椭圆设置为指南,定位它们并在故事板中设置旋转变换即可。LayoutPath 在过去的场景中确实很方便。 - Chris W.
2个回答

1

在WinRT XAML Toolkit中,可以查看CascadingTextBlock控件的示例,了解如何将一个TextBlock分成多个部分。您只需要改变转换动画的方式。 如果您的文本是一个常量字符串-最好在Blend中创建动画-在圆上排列多个单字母TextBlocks并使用提供的工具设计动画。


它不是一个常量字符串,但是你的CascadingTexBlock提示非常有用,我会去看一下。 - Dinis Vieira

0

这个不起作用吗?它是一个纯XAML解决方案。Storyboard在加载时开始。

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
   <Window.Resources>
          <Storyboard x:Key="Rotate">
                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Label1">
                       <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                       <EasingDoubleKeyFrame KeyTime="0:0:1" Value="360"/>
                 </DoubleAnimationUsingKeyFrames>
          </Storyboard>
   </Window.Resources>
   <Window.Triggers>
          <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                 <BeginStoryboard Storyboard="{StaticResource Rotate}"/>
          </EventTrigger>
   </Window.Triggers>
<Grid>
   <Label x:Name="Label1" Content="WordsAndStuff" HorizontalAlignment="Left" Margin="218.388,112.806,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.509,1.782">
          <Label.RenderTransform>
                 <TransformGroup>
                       <ScaleTransform/>
                       <SkewTransform/>
                       <RotateTransform/>
                       <TranslateTransform/>
                 </TransformGroup>
          </Label.RenderTransform>
   </Label>

</Grid>


1
这很不错,但它是一个WPF解决方案,而不是WinRT/XAML,并且它只适用于单个标签,而不是单独的字母。 - Filip Skakun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接