WPF双重动画:步骤动画?

时间:2009-10-09 15:08:31

标签: wpf animation

在我目前的应用程序中,我有这个小动画。它使画布完全旋转360度并且工作正常。

<DoubleAnimation
 Storyboard.TargetName="WaitCanvas" 
 Storyboard.TargetProperty="(Canvas.RenderTransform).(TransformGroup.Children)[0]  
 .(RotateTransform.Angle)" 
 From="0" To="360" Duration="0:0:2"
 AutoReverse="False" RepeatBehavior="Forever" />

但我想要做的不是平滑的动画,而是每个动画的步长为22.5度。怎么办呢?

3 个答案:

答案 0 :(得分:5)

您可以使用DoubleAnimationUsingKeyFrames并在同一时间点为每个增量22.5度制作两个关键帧。

答案 1 :(得分:0)

添加我实际上正在搜索的XAML示例。

<Storyboard
    BeginTime="00:00:00"
    RepeatBehavior="Forever"
    Storyboard.TargetName="WaitCanvas" 
    Storyboard.TargetProperty="(Canvas.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)">
    <DoubleAnimationUsingKeyFrames Duration="0:0:2">
        <DoubleKeyFrameCollection>
            <DiscreteDoubleKeyFrame KeyTime="0:0:0.000" Value="0" />
            <DiscreteDoubleKeyFrame KeyTime="0:0:0.125" Value="22.5" />
            <DiscreteDoubleKeyFrame KeyTime="0:0:0.250" Value="45" />
            <DiscreteDoubleKeyFrame KeyTime="0:0:0.375" Value="67.5" />
            <DiscreteDoubleKeyFrame KeyTime="0:0:0.500" Value="90" />
            <DiscreteDoubleKeyFrame KeyTime="0:0:0.625" Value="110.5" />
            <!-- ... -->
        </DoubleKeyFrameCollection>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

答案 2 :(得分:-3)

更简单,使用DoubleAnimation“By”属性,如:

<DoubleAnimation 
 Storyboard.TargetName="WaitCanvas"  
 Storyboard.TargetProperty="(Canvas.RenderTransform).(TransformGroup.Children)[0]   
 .(RotateTransform.Angle)"  
 From="0" To="360" By="22.5" Duration="0:0:2"
 AutoReverse="False" RepeatBehavior="Forever" />