WPF动画常用三个属性
开发工具与关键技术:C#,WPF
作者:刘海红
撰写时间:2019年5月20日
WPF中有很多属性,动画的属性常用的有三个,并不是说只有三个,只是用的频率比较多,所以常常会用到它们,三个属性分别是AccelerationRatio、DeceleRation、RepeatBehavior属性。这三个属性可以控制动画运行的不同状态。它们之间又有什么样的作用和理解呢?AccelerationRatio和DeceleRatio属性是可以通过AcclerationRation和DecelerationRation属性压缩部分时间轴,使动画运行的更快,并将拉伸其他时间进行补偿,是总时间保持不变。这两个属性都表示百分比值,例如,将AcclerationRation属性设置为0.3,表示希望使用动画持续时间中前30%的时间进行加速。例如:在一个10秒的动画中,前3秒会加速运行,而剩余的7秒会以恒定不变的速度运行,如果将DecelerationRation属性设置为0.3,那么最后3秒回减速运行。AccelerationRatio的意思可以说是“加速”,相反DeceleRation是“减速”的意思
例如:代码的解析
xaml的布局:
图1
如图1所见是xaml页面的布局,并且用到是网格的布局,图1中的click点击事件是在控制的后台进行编码,双击“Button_Click”可以按F12转到定义,或者是双击后鼠标右键选择转到定义就可以进入到控制器编译代码。编译完代码后,运行点击页面中的按钮“点击开始动画”,“这就是动画的按钮”就会进行运作。
后台代码:
图2
图2中from属性是开始值,to属性是元素的结束值,Duration是整个动画执行的时间。图2中划有红色横线的那一段代码意思是:动画只是执行3遍就不会再执行的了。Animation其实是一个类,是可以同时发生的动画,只要创建多个Animation动画,然后为元素设置属性就可以了,并且如图1所示我们用到的是双精度数据类型,为了实现属性的动态化,需要使用DoubleAnimation类,所以我们在图2中实例化了DoubleAnimation类
另外的RepeatBehavior属性其实是使用RepeatBehavior属性可以控制如何重复运行动画,如果希望重复固定次数,应为RepeatBehavior构造函数传递合适的次数。还可设置RepeatBehavior为永久重复,也就是图2中划红色横线的下面那一段代码。
运行的效果是动画的宽度执行了三次,到达第三次的时候它就会结束了执行。
图3效果图
下面是后台代码加速和减速,改变的是动画的高度。
图4代码图
效果图如下:
总结:WPF动画只不过是在一段时间间隔内修改依赖项属性值的一种方式。并且WPF动画中使用的只有三种方法:线性插值,关键帧和路径,这三种方法在在System.Windows.Media.Animation名称空间中将发现以下内容:7个"类型名+Animation类"这些类使用插值动画;22个"类型名+AnimationUsingKeyFrames" 这些类使用关键帧动画; 3个"类型名+AnimationUsingPath"类这类使用基于路径的动画;需要记忆的还有TimeLine类中常用属性。
TimeLine类的常用属性
名称 说明
BeginTime 设置将被添加到动画开始之前的延时时间(TimeSpan类型),这一延时总被加载到总时间,具有5秒延时的5秒动画,总时间是10秒
Duration 动画开始到结束的运行时间
SpeedRatio 提高或减慢动画速度。SpeedRatio属性值是1,如果增加该属性值为5,动画是速度就会变成原来的5倍
AcclerationRatio
DecelrationRatio 使动画不是线性的,从而开始时较慢,或者开始时较快,这两个属性的值都在0~1之间,这两个属性值之和不能超过1
AutoReverse 如果为true。当动画完成时会自动反向播放,返回到原始值
FillBehavior 决定当动画结束时,如何操作
RepeatBehavior 通过该属性,可以使用指定的次数或时间间隔重复动画,用于设置这个属性的RepeatBehavior对象决定了确切的行为。