代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

WPF DoubleAnimation:按步骤制作动画?

  •  4
  • TalkingCode  · 技术社区  · 15 年前

    在我当前的应用程序中,我有这个小动画。它可以使画布旋转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 回复  |  直到 6 年前
        1
  •  5
  •   SLaks    15 年前

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

        2
  •  0
  •   kub1x    6 年前

    添加我正在实际搜索的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>
    
        3
  •  -3
  •   Jim McCurdy    12 年前

    更简单的方法是使用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" />