TextBox TranslateTransform动画

时间:2011-11-28 19:05:41

标签: wpf animation text textbox

我的应用程序中有一个TextBlock。我想TranslateTransform动画每个单词在我的 TextBlock的。这类似于Text Effect的Exist In PowerPoint。

例如:每个单词将向上移动20px然后返回到最后位置

1 个答案:

答案 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>