Storyboard有BeginTime和Duration属性,可以使用它们来控制播放动画的区间。

        首先,实现一个6秒的动画,如下:

<Storyboard x:Key="sb">

    <DoubleAnimation Storyboard.TargetName="Rotate" Storyboard.TargetProperty="Angle"

                     BeginTime="00:00:00" Duration="00:00:06" FillBehavior="HoldEnd"

                     From="0" To="180"/>

</Storyboard>

        获取动画,可以在Load函数中进行:

m_storyBoard = this.Resources["sb"] as Storyboard;

        如果要播放前2秒,可以设定Duration为2秒,这样,就只会播放前2秒,代码如下:

if (m_storyBoard != null)

{

    m_storyBoard.BeginTime = TimeSpan.FromSeconds(0);

    m_storyBoard.Duration = TimeSpan.FromSeconds(2);

    m_storyBoard.Begin(this, true);

}

            如果要播放后2秒,可以设定BeginTime为-4秒,这样,就会从第4秒开始播放,换句话说设定BeginTime为-4秒,表示动画提前4秒开始播放,代码如下:

if (m_storyBoard != null)

{

    m_storyBoard.BeginTime = TimeSpan.FromSeconds(-4);

    m_storyBoard.Duration = TimeSpan.FromSeconds(6);

    m_storyBoard.Begin(this, true);

}

         如果要播放中间2秒,按照上面所述,设定BeginTime为-2秒,Duration为4秒,这样,动画就会从第2秒开始播放,播放到4秒,代码如下:

if (m_storyBoard != null)

{

    m_storyBoard.BeginTime = TimeSpan.FromSeconds(-2);

    m_storyBoard.Duration = TimeSpan.FromSeconds(4);

    m_storyBoard.Begin(this, true);

}

           另外,SpeedRatio的设置,可以控制动画播放的速率,相应地就可以做到延长或缩短整个动画。

 

详细的可以参考Demo:

 https://files.cnblogs.com/xirihanlin/DL090114@cc-AnimationControlDemo.zip

相关文章:

  • 2021-06-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-03
  • 2022-12-23
  • 2022-03-04
  • 2022-12-23
猜你喜欢
  • 2021-06-15
  • 2021-09-24
  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
相关资源
相似解决方案