www.ayjs.net AY原创, 转载请 标记出处,谢谢
颜色渐变,假如Canvas的背景颜色渐变
大家常用StoryBoard的写法我就不说了,这里我说关键帧的写法
创建关键帧集
ColorAnimationUsingKeyFrames MouseOverFrames = new ColorAnimationUsingKeyFrames();
这里有个细节 帧集合.FillBehavior = FillBehavior.Stop; 是设置 动画执行完是否恢复原值,也就是最终不锁定动画属性,使得后台可以修改,这个很常用,理解也很重要
关于 帧集合.Completed 完成事件,你也可以完成时候,手动设置最终值,使得 属性不会被动画锁定
2. 补充 每帧
EasingColorKeyFrame over1 = new EasingColorKeyFrame(MouseOverBackground, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(300)),easyIn);
3. 使用缓冲函数过渡,比如如下
IEasingFunction easyIn = new CircleEase() { EasingMode = EasingMode.EaseIn };
4. 执行动画
this.Background.BeginAnimation(SolidColorBrush.ColorProperty, MouseOverFrames);
当然这里 也可以是 控件元素的 BeginAnimation,这里演示的是特殊的颜色带有层级关系的 DependencyObject
当然你也可以把一整套frame放入storyboard,然后统一执行.