wpf 动画_WPF中监视动画进度

本篇接上一篇,在上一篇中,我们制作了一个简单利用动画来控制播放一首MP3的例子,那么如果我们想监视到动画执行到什么进度了呢?很明显,WPF时可以做到的,只需要响应故事板的CurrentTimeInvalidated事件。

话不多少直接上代码(不了解代码结构的朋友可以看看上一篇):

前台Xaml:

1.添加一个ProgressBar监视进度,注意这里最大值设置为1,因为动画始终Clock的CurrentProcess属性最大值是1。

<ProgressBar x:Name="prsbar" HorizontalAlignment="Left" Maximum="1" Height="7" VerticalAlignment="Top" Width="677" Margin="0,30,0,0"/>

2.响应故事板的CurrentTimeInvalidated事件

<Storyboard x:Key="music" BeginTime="0:0:1" CurrentTimeInvalidated="Storyboard_CurrentTimeInvalidated" >

<MediaTimeline Storyboard.TargetName="md" d:DesignTimeNaturalDuration="205" Source="ALWAYS.mp3"/>

</Storyboard>

后台代码:

/// <summary>

/// 该事件在动画前进一个步长时发生

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void Storyboard_CurrentTimeInvalidated(object sender, EventArgs e)

{

//Clock对象为动画时钟

Clock clock = (Clock)sender;

if(clock.CurrentProgress==null)

{

this.prsbar.Value = 0;

}

else

{

this.prsbar.Value = (double)clock.CurrentProgress;

}

}

最终效果如下:

1106dea11c58f37bb3b677716504ed14.gif

当然,故事板还有其他的事件,比如Completed,CurrentStateValidated等等,有兴趣的朋友欢迎留言一起交流哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值