我的应用程序中有一个TextBlock。我想TranslateTransform动画每个单词在我的 TextBlock的。这类似于Text Effect的Exist In PowerPoint。
例如:每个单词将向上移动20px然后返回到最后位置
答案 0 :(得分:0)
在我的研究中,我发现了一个来自微软的样本,我曾经看过如何使这项工作成功。
首先我们为TextBlock定义TextEffects:
<TextBlock.TextEffects>
<TextEffectCollection>
<TextEffect PositionCount="1" x:Name="TxtEffect">
<TextEffect.Transform>
<TranslateTransform x:Name="Transform" X="0" Y="0"></TranslateTransform>
</TextEffect.Transform>
</TextEffect>
</TextEffectCollection>
</TextBlock.TextEffects>
其次,我们定义动画:
1)使用Int32AnimationUsingKeyFrames和Define的增加PositionCount的动画 Int32AnimationUsingKeyFrames.KeyFrames文本中存在的单词数
2)TranslateTransform动画移动每个单词
三个单词的例子:
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetName="Transform" Storyboard.TargetProperty="Y" From="0" To="20" BeginTime="0:0:0" Duration="0:0:0.25"/>
<DoubleAnimation Storyboard.TargetName="Transform" Storyboard.TargetProperty="Y" From="20" To="-20" BeginTime="0:0:0.25" Duration="0:0:0.5" />
<DoubleAnimation Storyboard.TargetName="Transform" Storyboard.TargetProperty="Y" From="-20" To="0" BeginTime="0:0:0.75" Duration="0:0:0.25" />
</Storyboard>
</BeginStoryboard>
<BeginStoryboard Name="TxtEf">
<Storyboard>
<Int32AnimationUsingKeyFrames Storyboard.TargetName="TxtEffect"
Storyboard.TargetProperty="PositionStart"
Duration="0:0:2.5" AutoReverse="True" RepeatBehavior="Forever">
<Int32AnimationUsingKeyFrames.KeyFrames>
<DiscreteInt32KeyFrame Value="0" KeyTime="0:0:0" />
<DiscreteInt32KeyFrame Value="1" KeyTime="0:0:1" />
<DiscreteInt32KeyFrame Value="2" KeyTime="0:0:2" />
</Int32AnimationUsingKeyFrames.KeyFrames>
</Int32AnimationUsingKeyFrames>
</Storyboard>