Silverlight 使用了有一段时间了,它的动画效果是很不错,但是只在Blend中制作动画,太呆板,不能很好的灵活应用,于是写了一个动画类,供大家使用,多提意见,现在只扩展了2D动画,以后再扩展3D动画,下面面是类的主题程序,稍后附上使用方法。
#region 动画类 /// <summary> /// 动画类 /// </summary> public class AnimationSL { #region 注释信息 //RenderTransformOrigin:中心点 //ScaleTransform:将一个对象在水平或垂直方向进行放大或缩小。 //SkewTransform:将一个对象相对于X轴或Y轴进行倾斜 //RotateTransform:将一个对象旋转特定的角度。 //TranslateTransform:将一个对象在水平或垂直方向进行移动。 #endregion
public delegate void CompletedEvent(FrameworkElement UI, object sender, EventArgs e); public event CompletedEvent Completed;
#region 实例 /// <summary> /// 实例 /// </summary> public AnimationSL() { Initialize(); } /// <summary> /// 实例 /// </summary> /// <param name="UI_"></param> public AnimationSL(FrameworkElement UI_) { UI = UI_; Initialize(); } /// <summary> /// 初始化 /// </summary> private void Initialize() { RenderTransformOrigin = new _RenderTransformOriginClass(this); ScaleTransform = new _ScaleTransformClass(this); SkewTransform = new _SkewTransformClass(this); RotateTransform = new _RotateTransformClass(this); TranslateTransform = new _TranslateTransformClass(this); DropShadowEffect = new _DropShadowEffectClass(this); CompositeTransform = new _CompositeTransformClass(this); } #endregion
#region 声明动画 private String _Name = ""; /// <summary> /// 动画名字 /// </summary> public String Name { get { return _Name; } set { _Name = value; } } private FrameworkElement _UI = null; /// <summary> /// 动画对象 /// </summary> public FrameworkElement UI { get { return _UI; } set { _UI = value; } } private Storyboard _Storyboard = new Storyboard(); /// <summary> /// 动画处理 /// </summary> private System.Windows.Media.TransformGroup _TransformGroup = new System.Windows.Media.TransformGroup(); /// <summary> /// 2D缩放处理 /// </summary> private System.Windows.Media.ScaleTransform _ScaleTransform = new System.Windows.Media.ScaleTransform(); /// <summary> /// 2D扭曲处理 /// </summary> private System.Windows.Media.SkewTransform _SkewTransform = new System.Windows.Media.SkewTransform(); /// <summary> /// 2D旋转处理 /// </summary> private System.Windows.Media.RotateTransform _RotateTransform = new System.Windows.Media.RotateTransform(); /// <summary> /// 2D移动处理 /// </summary> private System.Windows.Media.TranslateTransform _TranslateTransform = new System.Windows.Media.TranslateTransform(); /// <summary> /// 翻转处理 /// </summary> private System.Windows.Media.CompositeTransform _CompositeTransform = new System.Windows.Media.CompositeTransform(); #endregion
#region 声明动画处理 private PointAnimationUsingKeyFrames _PA_RenderTransformOrigin = new PointAnimationUsingKeyFrames(); /// <summary> /// 中心点 /// </summary> public PointAnimationUsingKeyFrames PA_RenderTransformOrigin { get { return _PA_RenderTransformOrigin; } set { _PA_RenderTransformOrigin = value; } } private DoubleAnimationUsingKeyFrames _DA_ScaleTransform_X = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象在水平或垂直方向进行放大或缩小(X轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_ScaleTransform_X { get { return _DA_ScaleTransform_X; } set { _DA_ScaleTransform_X = value; } } private DoubleAnimationUsingKeyFrames _DA_ScaleTransform_Y = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象在水平或垂直方向进行放大或缩小(Y轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_ScaleTransform_Y { get { return _DA_ScaleTransform_Y; } set { _DA_ScaleTransform_Y = value; } } private DoubleAnimationUsingKeyFrames _DA_SkewTransform_X = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象相对于X轴或Y轴进行倾斜(X轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_SkewTransform_X { get { return _DA_SkewTransform_X; } set { _DA_SkewTransform_X = value; } } private DoubleAnimationUsingKeyFrames _DA_SkewTransform_Y = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象相对于X轴或Y轴进行倾斜(Y轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_SkewTransform_Y { get { return _DA_SkewTransform_Y; } set { _DA_SkewTransform_Y = value; } } private DoubleAnimationUsingKeyFrames _DA_RotateTransform = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象旋转特定的角度 /// </summary> public DoubleAnimationUsingKeyFrames DA_RotateTransform { get { return _DA_RotateTransform; } set { _DA_RotateTransform = value; } } private DoubleAnimationUsingKeyFrames _DA_TranslateTransform_X = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象在水平或垂直方向进行移动(X轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_TranslateTransform_X { get { return _DA_TranslateTransform_X; } set { _DA_TranslateTransform_X = value; } } private DoubleAnimationUsingKeyFrames _DA_TranslateTransform_Y = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象在水平或垂直方向进行移动(Y轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_TranslateTransform_Y { get { return _DA_TranslateTransform_Y; } set { _DA_TranslateTransform_Y = value; } }
private DoubleAnimationUsingKeyFrames _DA_CompositeTransform_X = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象翻转(X轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_CompositeTransform_X { get { return _DA_CompositeTransform_X; } set { _DA_CompositeTransform_X = value; } } private DoubleAnimationUsingKeyFrames _DA_CompositeTransform_Y = new DoubleAnimationUsingKeyFrames(); /// <summary> /// 将一个对象翻转(Y轴) /// </summary> public DoubleAnimationUsingKeyFrames DA_CompositeTransform_Y { get { return _DA_CompositeTransform_Y; } set { _DA_CompositeTransform_Y = value; } } #endregion
#region 声明投影效果 //投影效果 #endregion
#region 鼠标进入置于最上层 private int _ZIndex = 0; /// <summary> /// UI的原层级 /// </summary> public int ZIndex { get { return _ZIndex; } set { _ZIndex = value; } } private int _MaxZIndex = 9999; /// <summary> /// 计算当天经过的毫秒数(如果前后操作刚好跨天,将可能导致Bug) /// </summary> public int MaxZIndex { get { //DateTime d1 = DateTime.Now; //DateTime d2 = DateTime.Parse(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + " 00:00:00"); //Int32 _MaxZIndex = Int32.Parse(Math.Ceiling(d1.Subtract(d2).TotalMilliseconds).ToString()); return _MaxZIndex; } set { _MaxZIndex = value; } } private bool _MouseEnterZIndex = false; #endregion
#region 鼠标点击置于最上层 private bool _MouseDownMaxZIndex = false; /// <summary> /// 鼠标点击置于最上层 /// </summary> public bool MouseDownMaxZIndex { get { return _MouseDownMaxZIndex; } set { _MouseDownMaxZIndex = value; } } #endregion
#region 置于最上后,是否保持其层级信息不变 private bool _IsMaxZIndex = false; /// <summary> /// 置于最上后,是否保持其层级信息不变 /// </summary> public bool IsMaxZIndex { get { return _IsMaxZIndex; } set { _IsMaxZIndex = value; } } #endregion
#region 移动时是否至于半透明状态 private bool _IsMoveOpacity = false; /// <summary> /// 移动时是否至于半透明状态 /// </summary> public bool IsMoveOpacity { get { return _IsMoveOpacity; } set { _IsMoveOpacity = value; } } #endregion
#region 动画容器 /// <summary> /// 动画容器 /// </summary> public Storyboard Storyboard { get { return _Storyboard; } set { _Storyboard = value; } } #endregion
#region 临时 private System.Windows.Media.Effects.Effect _Effect = null; #endregion
#region 中心点 /// <summary> /// 中心点 /// </summary> public _RenderTransformOriginClass RenderTransformOrigin = null; /// <summary> /// 中心点 /// </summary> public class _RenderTransformOriginClass { #region 声明 private AnimationSL _AnimationSL; /// <summary> /// 动画实例 /// </summary> public AnimationSL AnimationSL { get { return _AnimationSL; } set { _AnimationSL = value; } }
/// <summary> /// 实例 /// </summary> /// <param name="AnimationSL_">动画实例</param> public _RenderTransformOriginClass(AnimationSL AnimationSL_) { AnimationSL = AnimationSL_; } #endregion
#region 处理中心点 /// <summary> /// 处理中心点 /// </summary> /// <param name="CenterX">X轴</param> /// <param name="CenterY">Y轴</param> /// <param name="sTimeSpan">时间线</param> public void AddCenter(Double CenterX, Double CenterY, Int32 sTimeSpan) { EasingPointKeyFrame EDK = new EasingPointKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = new Point(CenterX, CenterY); AnimationSL.PA_RenderTransformOrigin.KeyFrames.Add(EDK); } #endregion
} #endregion
#region 将一个对象在水平或垂直方向进行放大或缩小 /// <summary> /// 将一个对象在水平或垂直方向进行放大或缩小 /// </summary> public _ScaleTransformClass ScaleTransform = null; /// <summary> /// 将一个对象在水平或垂直方向进行放大或缩小 /// </summary> public class _ScaleTransformClass { #region 声明 private AnimationSL _AnimationSL; /// <summary> /// 动画实例 /// </summary> public AnimationSL AnimationSL { get { return _AnimationSL; } set { _AnimationSL = value; } } /// <summary> /// 实例 /// </summary> /// <param name="AnimationSL_">动画实例</param> public _ScaleTransformClass(AnimationSL AnimationSL_) { AnimationSL = AnimationSL_; } #endregion
#region 处理X轴的变化 /// <summary> /// 处理X轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void AddScaleX(Double sSize, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = sSize; AnimationSL.DA_ScaleTransform_X.KeyFrames.Add(EDK); } #endregion
#region 处理Y轴的变化 /// <summary> /// 处理Y轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void AddScaleY(Double sSize, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = sSize; AnimationSL.DA_ScaleTransform_Y.KeyFrames.Add(EDK); } #endregion } #endregion
#region 将一个对象相对于X轴或Y轴进行倾斜 /// <summary> /// 将一个对象相对于X轴或Y轴进行倾斜 /// </summary> public _SkewTransformClass SkewTransform = null; /// <summary> /// 将一个对象相对于X轴或Y轴进行倾斜 /// </summary> public class _SkewTransformClass { #region 声明 private AnimationSL _AnimationSL; /// <summary> /// 动画实例 /// </summary> public AnimationSL AnimationSL { get { return _AnimationSL; } set { _AnimationSL = value; } } /// <summary> /// 实例 /// </summary> /// <param name="AnimationSL_">动画实例</param> public _SkewTransformClass(AnimationSL AnimationSL_) { _AnimationSL = AnimationSL_; } #endregion
#region 处理X轴的变化 /// <summary> /// 处理X轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void Add_AngleX(Double AngleX, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = AngleX; AnimationSL.DA_SkewTransform_X.KeyFrames.Add(EDK); } #endregion
#region 处理Y轴的变化 /// <summary> /// 处理Y轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void Add_AngleY(Double AngleY, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = AngleY; AnimationSL.DA_SkewTransform_Y.KeyFrames.Add(EDK); } #endregion } #endregion
#region 将一个对象旋转特定的角度 /// <summary> /// 将一个对象旋转特定的角度 /// </summary> public _RotateTransformClass RotateTransform = null; /// <summary> /// 将一个对象旋转特定的角度 /// </summary> public class _RotateTransformClass { #region 声明 private AnimationSL _AnimationSL; /// <summary> /// 动画实例 /// </summary> public AnimationSL AnimationSL { get { return _AnimationSL; } set { _AnimationSL = value; } } /// <summary> /// 实例 /// </summary> /// <param name="AnimationSL_">动画实例</param> public _RotateTransformClass(AnimationSL AnimationSL_) { AnimationSL = AnimationSL_; } #endregion
#region 处理旋转 /// <summary> /// 处理旋转 /// </summary> /// <param name="nAngle">旋转角度</param> /// <param name="sTimeSpan">时间</param> public void Angle(Double nAngle, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = nAngle; AnimationSL.DA_RotateTransform.KeyFrames.Add(EDK); } #endregion
} #endregion
#region 将一个对象在水平或垂直方向进行移动 /// <summary> /// 将一个对象在水平或垂直方向进行移动 /// </summary> public _TranslateTransformClass TranslateTransform = null; /// <summary> /// 将一个对象在水平或垂直方向进行移动 /// </summary> public class _TranslateTransformClass { #region 声明 private AnimationSL _AnimationSL; /// <summary> /// 动画实例 /// </summary> public AnimationSL AnimationSL { get { return _AnimationSL; } set { _AnimationSL = value; } } /// <summary> /// 实例 /// </summary> /// <param name="AnimationSL_">动画实例</param> public _TranslateTransformClass(AnimationSL AnimationSL_) { AnimationSL = AnimationSL_; } #endregion
#region 处理X轴的变化 /// <summary> /// 处理X轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void AddMoveX(Double nDistanceX, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = nDistanceX; AnimationSL.DA_TranslateTransform_X.KeyFrames.Add(EDK); } #endregion
#region 处理Y轴的变化 /// <summary> /// 处理Y轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void AddMoveY(Double nDistanceY, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = nDistanceY; AnimationSL.DA_TranslateTransform_Y.KeyFrames.Add(EDK); } #endregion } #endregion
#region 将一个对象翻转 /// <summary> /// 将一个对象翻转 /// </summary> public _CompositeTransformClass CompositeTransform = null; /// <summary> /// 将一个对象翻转 /// </summary> public class _CompositeTransformClass { #region 声明 private AnimationSL _AnimationSL; /// <summary> /// 动画实例 /// </summary> public AnimationSL AnimationSL { get { return _AnimationSL; } set { _AnimationSL = value; } } /// <summary> /// 实例 /// </summary> /// <param name="AnimationSL_">动画实例</param> public _CompositeTransformClass(AnimationSL AnimationSL_) { AnimationSL = AnimationSL_; } #endregion
#region 处理X轴的变化 /// <summary> /// 处理X轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void AddScaleX(Double nDistanceX, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = nDistanceX; AnimationSL.DA_CompositeTransform_X.KeyFrames.Add(EDK); } #endregion
#region 处理Y轴的变化 /// <summary> /// 处理Y轴的变化 /// </summary> /// <param name="sSize">大小</param> /// <param name="sTimeSpan">时间</param> public void AddScaleY(Double nDistanceY, Int32 sTimeSpan) { EasingDoubleKeyFrame EDK = new EasingDoubleKeyFrame(); EDK.KeyTime = TimeSpan.FromMilliseconds(sTimeSpan); EDK.Value = nDistanceY; AnimationSL.DA_CompositeTransform_Y.KeyFrames.Add(EDK); } #endregion } #endregion
#region 投影效果 /// <summary> /// 投影效果 /// </summary> public _DropShadowEffectClass DropShadowEffect = null; /// <summary> /// 投影效果 /// </summary> public class _DropShadowEffectClass { #region 声明 private bool _IsEnabled = false; private Double _Opacity = 100; private System.Windows.Media.Color _Color = System.Windows.Media.Color.FromArgb(100, 128, 128, 128); private Double _BlurRadius = 5; private Double _Direction = 315; private Double _ShadowDepth = 5; private System.Windows.Media.Effects.DropShadowEffect _DropShadowEffect = null;
public System.Windows.Media.Effects.DropShadowEffect DropShadowEffect { get { return _DropShadowEffect; } set { _DropShadowEffect = value; } } private AnimationSL _AnimationSL; /// <summary> /// 实例化 /// </summary> public _DropShadowEffectClass(AnimationSL AnimationSL) { _AnimationSL = AnimationSL; System.Windows.Media.Effects.DropShadowEffect _DSE = new System.Windows.Media.Effects.DropShadowEffect(); if (_DSE != null) { _DropShadowEffect = _DSE; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion
#region 是否打开投影效果
/// <summary> /// 是否打开投影效果 /// </summary> public bool IsEnabled { get { return _IsEnabled; } set { _IsEnabled = value; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion
#region 投影颜色 /// <summary> /// 投影颜色 /// </summary> public System.Windows.Media.Color Color { get { return _Color; } set { _Color = value; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion
#region 透明度 /// <summary> /// 透明度 /// </summary> public Double Opacity { get { return _Opacity; } set { _Opacity = value; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion
#region 模糊半径 /// <summary> /// 模糊半径 /// </summary> public Double BlurRadius { get { return _BlurRadius; } set { _BlurRadius = value; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion
#region 投射的方向 /// <summary> /// 投射的方向 /// </summary> public Double Direction { get { return _Direction; } set { _Direction = value; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion
#region 投影的距离 /// <summary> /// 投影的距离 /// </summary> public Double ShadowDepth { get { return _ShadowDepth; } set { _ShadowDepth = value; _DropShadowEffect.Color = Color; _DropShadowEffect.Opacity = Opacity; _DropShadowEffect.BlurRadius = BlurRadius; _DropShadowEffect.Direction = _Direction; _DropShadowEffect.ShadowDepth = _ShadowDepth; } } #endregion } #endregion
#region 开始动画 /// <summary> /// 开始动画 /// </summary> /// <returns></returns> public Storyboard Begin() { return _Beigin(UI); } /// <summary> /// 开始动画 /// </summary> /// <param name="UI_">FrameworkElement对象</param> /// <returns></returns> public Storyboard Begin(FrameworkElement UI_) { return _Beigin(UI_); } private Storyboard _Beigin(FrameworkElement UI_) { UI = UI_; if (UI != null) { #region 注册声明 _TransformGroup = new System.Windows.Media.TransformGroup(); _ScaleTransform = new System.Windows.Media.ScaleTransform(); _SkewTransform = new System.Windows.Media.SkewTransform(); _RotateTransform = new System.Windows.Media.RotateTransform(); _TranslateTransform = new System.Windows.Media.TranslateTransform(); _CompositeTransform = new System.Windows.Media.CompositeTransform();
_TransformGroup.Children.Add(_ScaleTransform); _TransformGroup.Children.Add(_SkewTransform); _TransformGroup.Children.Add(_RotateTransform); _TransformGroup.Children.Add(_TranslateTransform); _TransformGroup.Children.Add(_CompositeTransform); UI.RenderTransform = _TransformGroup;
Storyboard.Stop();
#region 中心点 Storyboard.Children.Remove(PA_RenderTransformOrigin); { Storyboard.SetTarget(PA_RenderTransformOrigin, UI); Storyboard.SetTargetProperty(PA_RenderTransformOrigin, new PropertyPath("(UIElement.RenderTransformOrigin)")); Storyboard.Children.Add(PA_RenderTransformOrigin); } #endregion
#region 缩放处理 Storyboard.Children.Remove(DA_ScaleTransform_X); { Storyboard.SetTarget(DA_ScaleTransform_X, UI); Storyboard.SetTargetProperty(DA_ScaleTransform_X, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)")); Storyboard.Children.Add(DA_ScaleTransform_X); } Storyboard.Children.Remove(DA_ScaleTransform_Y); { Storyboard.SetTarget(DA_ScaleTransform_Y, UI); Storyboard.SetTargetProperty(DA_ScaleTransform_Y, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)")); Storyboard.Children.Add(DA_ScaleTransform_Y); } #endregion
#region 倾斜处理 Storyboard.Children.Remove(DA_SkewTransform_X); { Storyboard.SetTarget(DA_SkewTransform_X, UI); Storyboard.SetTargetProperty(DA_SkewTransform_X, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)")); Storyboard.Children.Add(DA_SkewTransform_X); } Storyboard.Children.Remove(DA_SkewTransform_Y); { Storyboard.SetTarget(DA_SkewTransform_Y, UI); Storyboard.SetTargetProperty(DA_SkewTransform_Y, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleY)")); Storyboard.Children.Add(DA_SkewTransform_Y); } #endregion
#region 旋转处理 Storyboard.Children.Remove(DA_RotateTransform); { Storyboard.SetTarget(DA_RotateTransform, UI); Storyboard.SetTargetProperty(DA_RotateTransform, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)")); Storyboard.Children.Add(DA_RotateTransform); } #endregion
#region 移动处理 Storyboard.Children.Remove(DA_TranslateTransform_X); { Storyboard.SetTarget(DA_TranslateTransform_X, UI); Storyboard.SetTargetProperty(DA_TranslateTransform_X, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)")); Storyboard.Children.Add(DA_TranslateTransform_X); } Storyboard.Children.Remove(DA_TranslateTransform_Y); { Storyboard.SetTarget(DA_TranslateTransform_Y, UI); Storyboard.SetTargetProperty(DA_TranslateTransform_Y, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)")); Storyboard.Children.Add(DA_TranslateTransform_Y); } #endregion
#region 翻转处理 Storyboard.Children.Remove(DA_CompositeTransform_X); { Storyboard.SetTarget(DA_CompositeTransform_X, UI); Storyboard.SetTargetProperty(DA_CompositeTransform_X, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[4].(CompositeTransform.ScaleX)")); Storyboard.Children.Add(DA_CompositeTransform_X); } Storyboard.Children.Remove(DA_CompositeTransform_Y); { Storyboard.SetTarget(DA_CompositeTransform_Y, UI); Storyboard.SetTargetProperty(DA_CompositeTransform_Y, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[4].(CompositeTransform.ScaleY)")); Storyboard.Children.Add(DA_CompositeTransform_Y); } #endregion
#region 是否产生投影效果 _Effect = UI.Effect; if (DropShadowEffect.IsEnabled) { UI.Effect = DropShadowEffect.DropShadowEffect; } #endregion
#endregion
Storyboard.Begin(); Storyboard.Completed += new EventHandler(Storyboard_Completed); } return Storyboard; }
private void Storyboard_Completed(object sender, EventArgs e) { if (this.Completed != null) { this.Completed(this.UI, sender, e); } } #endregion } #endregion