silverlight中主要支持两种动画,一种是From/To/By和关键帧动画.
在TimeLine类下面有支持动画的类:
首先看看From/To/By动画.如上面的红线标示动画类
从字面意思上就可以了解,ColorAnimation主要是对对象的具有Color属性或其兼容的属性进行动画控制
DoubleAnimation就是对具有doule类型或兼容的属性进行动画控制
PointAnimation就是对其具有Point或兼容类型的属性进行动画控制
From/To/By动画都提供了几个相对的属性对动画进行进一步控制,它们分别是:
AutoReverse: Bool 动画是否反转.意思是是否再按To-->From再次反向动画
BeginTime: TimeSpan,指动画多少时间后开始执行
By: 动画从正在进行动画处理的属性的基值或前一动画的输出值继续到该值与 By 属性指定的值之和。可以理解为步进.
Duration:TimeSpan,动画持续的时间
FillBehavior: FillBehavior.HoldEnd|FillBehavior.Stop,动画完成后效果
From:起点
RepeatBehavior: RepeatBehavior 重复模式,支持时间和次数
SpeedRatio:double 相对于父的速率,默认1
To:终点
首先看看用代码怎么定义一个 DoubleAnimation动画 ,尝试2秒钟改变一个Button的宽度.
Storyboard storyboard = new Storyboard(); DoubleAnimation doubleAnimation = new DoubleAnimation() { AutoReverse = true,//动画自动反转 BeginTime = TimeSpan.FromSeconds(1),//1秒后开始动画 By = 100,//如果未指定To,则相当使用 From ---> From + By 做为 To Duration = TimeSpan.FromSeconds(2),//动画持续时间 FillBehavior = FillBehavior.HoldEnd,// From = 100, RepeatBehavior = new RepeatBehavior(10),//重复10次 SpeedRatio = 1,//相对于父的速率 To = 800 }; Storyboard.SetTarget(doubleAnimation, target);//Target是一个Button Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(Button.WidthProperty));//设置动画时间线的目标属性,一定要是其兼容的(此例为double),否则运行是会报错 storyboard.Children.Add(doubleAnimation);//加到StoryBoard中的时间线中 storyboard.Begin();//播放动画
ColorAnimation和PointAnimation基本一致,如ColorAnimation设置其BackGround属性为 Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Button.Background).(SolidColorBrush.Color)")),就可以实现其背景色到To的颜色动画效果了.
另外 StoryBoard中提供了动画控制的其它属性,如暂停,当前播放时间,状态,跳至时间线中的某一处或结尾