WPF动画
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:VS与WPF
作者:黄富滔
撰写时间:2021年08月06日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
页面上不是越多动画就越好,动画越多,系统就会越卡顿。会影响用户的使用感受,也就是要关注性能问题,而且有必要的动画还要控制动画的帧率。
动画的生命周期:WPF动画只是暂时的,这意味着它们不能真正改变基本属性的值, 当动画处于活动状态时,只是覆盖了属性的值。
WPF有三种动画:
1.0 线性插值,命名方式为“类型名+Animation类”(7个)
在开始值和结束值之间以逐步增加的方式改变属性的动画(线性插值过程)。
2.0 关键帧,命名方式为“类型名+AnimationUsingKeyFrames”(22个)
从一个值突然变成另一值的动画(关键帧动画)。
3.0 路径,命名方式为“类型名+AnimationUsingPath”(3个,不常用)
注意:1、数据类型都支持关键帧动画,除非他们根本不支持动画。
2、所有支持线性插值动画的数据类型,就一定会有相应的关键帧动画。
3、所有支持关键帧动画的数据类型,不一定会有相应的线性插值动画
故事版是动画的基本单元,可以控制动画的暂停、播放、开始等等
如果要将动画应用于某一个对象时,要声明故事版Storyboard并TargetName 和 TargetProperty附加属性指定要进行动画处理的对象和属性,最后需要使用事件触发器EventTrigger去触发。
TargetName 和TargetProperty可以作为故事版的附加属性,也可作为故事版的属性。当作为故事版的属性时,下面所有的动画都会执行故事版设置好的TargetProperty的属性。
动画依赖故事版,故事版又依赖触发器。所以一个完整的动画,需要三个部分:
一、动画的定义
二、把动画放到故事版里面
三、使用触发器触发动画
线性插值动画:对象属性和动画播放控制属性
对象属性:
Form :动画基值
To:到指定的值
Duration="0:0:10" 执行一次动画的时间
动画播放控制属性:
BeginTime:动画开始时间,默认单位是天,也可以设置时:分:秒
RepeatBehavior:动画执行次数或者时间,属性值可以是具体数值 "2" ,具体时间 "时:分:秒",或者无限循环"Forever"
AutoReverse="True" 反方向执行动画,渐变过程,例如仅仅设置淡入,也会有淡出过程
SpeedRadio="2":动画执行的速度
FillBehavior 决定什么时候发生动画,什么时候结束动画。HoldEnd表示动画结束后不再变化;Stop表示动画结束后再次回到起始值。
关键帧动画:
-ColorAnimationUsingKeyFrames 背景颜色方面
DoubleAnimationUsingKeyFrames 数值方面
PointAnimationUsingKeyFrames 关键点