Storyboard控制动画播放的区间
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