WPF中的动画——(2)

我们已经见识过了FromToByDuration这些动画类的核心属性 。但是,还有更多的、更有趣的属性供我们来改变动画的行为。

1BeginTime

       如果你不想动画在程序一起启动就播放的话,可以设置BeginTime为动画来插入一段延迟。BeginTime需要的是一个TimeSpan对象。如果一系列的动画都有一定的延迟的话,那么就可以形成一个连续的动画——由一段一段的动画构成。

       另外,BeginTime可以设置为负值,这样的话,动画会立即启动,从中间位置开始播放(位于BeginTime绝对值的地方)。使用它,就可以控制动画播放的区间了。

2SpeedRatio

       SpeedRatio属性是应用在Duration上的乘法器。默认值为1,可以设置为任何大于0double值。如果大于1,则会加速动画;如果小于1,则会减慢动画。一个5秒的动画,如果SpeedRatio设为2,则动画播放的时间将只有2.5秒,一切都像快进似的,匆匆而过。此外,SpeedRatio并不影响BeginTime,该有多少延迟就会有多少延迟。

3AutoReverse

       AutoReverse属性是控制动画是否回放的。如果设置为True,则动画会在一放完就开始回放,回放所花费的时间与前进花费的时间相同。AutoReverse属性会对动画总的播放时间产生影响。

4RepeateBehavior

       通过设置RepeateBehavior,可以实现以下3种不同行为:

       1)使动画重复一定次数,而不考虑它的持续时间,如RepeateBehavior="3x"

       2)是动画重复一定的时间,如RepeateBehavior="0:0:10"

       3)提前切断动画,如设定次数为小于1次或设定时间小于Duration

5AccelerationRatioDecelerationRatio

       默认情况下,动画以线性方式更新目标值。通过改变AccelerationRatioDecelerationRatio的值(默认都是0),可以使线性内插变为非线性的。产生的效果是,元素向终值“跳跃”,使得动画看起来更生动。

       AccelerationRatioDecelerationRatio两个属性都可以设置为01范围内的double值。AccelerationRatio值表示目标值从静止开始加速的时间百分比;DecelerationRatio值表示目标值 减速到静止值的时间百分比。因此,这两个属性的总和必须小于或等于1100%)。

       用图表示更容易理解:

 

6、IsAdditive和IsCumulative

   IsAdditive属性表示是否将初始值添加到From、To、By上。如果初始值是12,From是50,当IsAdditive为False时,值将从50往To变化;如果IsAdditive为True时,值将从62往(To + 12)变化。IsAdditive的设置不会对RepeateBehavior进行重复动画产生任何影响。

       IsCumulative属性表示值是否累积,它与RepeateBehavior进行重复动画时效果明显。进行下一次动画时,会从上一次动画的To值开始(IsAdditive = False情况下)。

7FillBehavior

       默认情况下,当一个动画结束时,目标属性仍然保持动画的终值,这是由FillBehavior的默认值造成的(FillBehavior.HoldEnd)。如果你想要属性在动画结束后跳回到动画开始前的值,可以设置FillBehaviorStop

 

由于这么些属性可以对动画做不同的调整,显然,动画的Duration值无法表示真正的时间长度!但可以用下列的公式来表示动画真正的持续时间:

1RepeateBehavior指定重复次数时:

整个动画的长度 = BeginTime + ((Duration * (AutoReverse ? 2 : 1) / SpeedRatio) * RepeatBehavior)

2) RepeateBehavior指定重复时间时:

整个动画的长度 = BeginTime + RepeateBehavior

转载于:https://www.cnblogs.com/xirihanlin/archive/2009/03/03/1402114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值