Mercurial > pub > ImplabNet
comparison Implab.Fx/AnimationHelpers.cs @ 4:381095ad0a69
Implab.Fx: implemented animation object
Implab.Fx: implemented transparency animation helper
author | cin |
---|---|
date | Tue, 17 Sep 2013 04:27:30 +0400 |
parents | |
children | f2559580b481 |
comparison
equal
deleted
inserted
replaced
3:1e9583086e99 | 4:381095ad0a69 |
---|---|
1 using System; | |
2 using System.Collections.Generic; | |
3 using System.Linq; | |
4 using System.Text; | |
5 using System.Windows.Forms; | |
6 using System.Diagnostics; | |
7 | |
8 namespace Implab.Fx | |
9 { | |
10 public static class AnimationHelpers | |
11 { | |
12 public static Animation<TTarget> AnimateProperty<TTarget,TVal>(this Animation<TTarget> animation, Action<TTarget,TVal> setter, Func<TTarget,TVal> getter, TVal newValue, Func<TVal,TVal,int,int,TVal> fx) where TTarget: class | |
13 { | |
14 if (animation == null) | |
15 throw new ArgumentNullException("animation"); | |
16 | |
17 TVal oldValue = getter(animation.Traget); | |
18 | |
19 animation.Step += (target, elaped, duration) => | |
20 { | |
21 var value = fx(oldValue, newValue, elaped, duration); | |
22 setter(target, value); | |
23 }; | |
24 | |
25 return animation; | |
26 } | |
27 | |
28 public static Animation<Form> AnimateTransparency(this Form ctl, float newValue) | |
29 { | |
30 var anim = new Animation<Form>(ctl); | |
31 | |
32 anim.AnimateProperty( | |
33 (target, value) => target.Opacity = value, | |
34 target => target.Opacity, | |
35 newValue, | |
36 (ov, nv, el, du) => ov + ((float)el / du) * (nv - ov) | |
37 ); | |
38 return anim; | |
39 } | |
40 } | |
41 } |