public override MyAnimateBase Animate() { IsAnimateCompleted = false; Element.RenderTransformOrigin = new Point(0.5, 0.5); Element.Visibility = Visibility.Visible; ScaleTransform translation = new ScaleTransform(1, 1); TranslateTransform translationTranslate = new TranslateTransform(0, 0); string translationName = ""; string translationTranslateName = ""; Storyboard story = new Storyboard(); DoubleAnimationUsingKeyFrames dauX = new DoubleAnimationUsingKeyFrames(); DoubleAnimationUsingKeyFrames dauY = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(1, 1); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); translationTranslateName = "ayTranslation" + translationTranslate.GetHashCode(); Win.RegisterName(translationTranslateName, translationTranslate); tg.Children.Add(translationTranslate); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } foreach (var item in tg.Children) { translationTranslate = item as TranslateTransform; if (translationTranslate != null) { break; } } if (translation != null) { var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { translationName = tex.ToString(); } else { translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); } } else { translation = new ScaleTransform(1, 1); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); Element.RenderTransform = tg; } if (translationTranslate != null) { var tex = translationTranslate.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { translationTranslateName = tex.ToString(); } else { translationTranslateName = "ayTranslation" + translationTranslate.GetHashCode(); Win.RegisterName(translationTranslateName, translationTranslate); } } else { translationTranslate = new TranslateTransform(0, 0); translationTranslateName = "ayTranslation" + translationTranslate.GetHashCode(); Win.RegisterName(translationTranslateName, translationTranslate); tg.Children.Add(translationTranslate); Element.RenderTransform = tg; } } #endregion var storyboardName = "aystory" + story.GetHashCode(); Win.Resources.Add(storyboardName, story); double danqianX = translation.ScaleX; double danqianY = translation.ScaleY; var keyspline = new KeySpline(0.55, 0.055, 0.675, 0.19); var keyspline2 = new KeySpline(0.175, 0.885, 0.320, 1); var k3_0 = new SplineDoubleKeyFrame(); k3_0.KeySpline = keyspline; k3_0.Value = 0.1; k3_0.KeyTime = TimeSpan.FromMilliseconds(0); var k3_1 = new SplineDoubleKeyFrame(); k3_1.KeySpline = keyspline2; k3_1.Value = 0.475; k3_1.KeyTime = TimeSpan.FromMilliseconds(AniTime(0.6)); var k3_2 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauX, translationName); Storyboard.SetTargetProperty(dauX, new PropertyPath(ScaleTransform.ScaleXProperty)); dauX.KeyFrames.Add(k3_0); dauX.KeyFrames.Add(k3_1); dauX.KeyFrames.Add(k3_2); story.Children.Add(dauX); var k4_0 = new SplineDoubleKeyFrame(); k4_0.KeySpline = keyspline; k4_0.Value = 0.1; k4_0.KeyTime = TimeSpan.FromMilliseconds(0); var k4_1 = new SplineDoubleKeyFrame(); k4_1.KeySpline = keyspline2; k4_1.Value = 0.475; k4_1.KeyTime = TimeSpan.FromMilliseconds(AniTime(0.6)); var k4_2 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauY, translationName); Storyboard.SetTargetProperty(dauY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauY.KeyFrames.Add(k4_0); dauY.KeyFrames.Add(k4_1); dauY.KeyFrames.Add(k4_2); story.Children.Add(dauY); DoubleAnimationUsingKeyFrames dauTranslateY = new DoubleAnimationUsingKeyFrames(); var k5_0 = new SplineDoubleKeyFrame(); k5_0.KeySpline = keyspline; k5_0.Value = -1000; k5_0.KeyTime = TimeSpan.FromMilliseconds(0); var k5_1 = new SplineDoubleKeyFrame(); k5_1.KeySpline = keyspline2; k5_1.Value = 60; k5_1.KeyTime = TimeSpan.FromMilliseconds(AniTime(0.6)); var k5_2 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauTranslateY, translationTranslateName); Storyboard.SetTargetProperty(dauTranslateY, new PropertyPath(TranslateTransform.YProperty)); dauTranslateY.KeyFrames.Add(k5_0); dauTranslateY.KeyFrames.Add(k5_1); dauTranslateY.KeyFrames.Add(k5_2); story.Children.Add(dauTranslateY); DoubleAnimationUsingKeyFrames dauOpacty = new DoubleAnimationUsingKeyFrames(); var k6 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(AniTime(0))); var k6_1 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(AniTime(0.6))); dauOpacty.KeyFrames.Add(k6); dauOpacty.KeyFrames.Add(k6_1); Storyboard.SetTarget(dauOpacty, Element); dauOpacty.FillBehavior = FillBehavior.Stop; Storyboard.SetTargetProperty(dauOpacty, new PropertyPath(UIElement.OpacityProperty)); story.Children.Add(dauOpacty); story.Completed += (sndr, evtArgs) => { try { Element.Opacity = 1; Win.Resources.Remove(storyboardName); Win.UnregisterName(translationName); dauX.KeyFrames.Clear(); dauX = null; dauY.KeyFrames.Clear(); dauY = null; story = null; base.CallClientCompleted(); } catch { } }; story.Begin(); return(this); }
public override MyAnimateBase Animate() { IsAnimateCompleted = false; Element.RenderTransformOrigin = new Point(0.5, 0.5); Element.Visibility = Visibility.Visible; ScaleTransform translation = new ScaleTransform(); DoubleAnimationUsingKeyFrames dau1 = new DoubleAnimationUsingKeyFrames(); DoubleAnimationUsingKeyFrames dau2 = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } if (translation != null) { //当前Y值 var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { translationName = tex.ToString(); } else { translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); } } else { translation = new ScaleTransform(); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); Element.RenderTransform = tg; } } #endregion double sx = translation.ScaleX; double sy = translation.ScaleY; if (!ScaleXFrom.HasValue && !ScaleYFrom.HasValue && ScaleXTo.HasValue && ScaleXTo == sx && ScaleYTo.HasValue && ScaleYTo == sy) { return(this); } EasingDoubleKeyFrame k2_xFrom = null; EasingDoubleKeyFrame k2_yFrom = null; if (ScaleXFrom.HasValue) { k2_xFrom = new EasingDoubleKeyFrame(ScaleXFrom.Value, TimeSpan.FromMilliseconds(AniTime(0))); } if (ScaleYFrom.HasValue) { k2_yFrom = new EasingDoubleKeyFrame(ScaleYFrom.Value, TimeSpan.FromMilliseconds(AniTime(0))); } EasingDoubleKeyFrame k2_x = null; EasingDoubleKeyFrame k2_y = null; if (ScaleXAdd.HasValue) { k2_x = new EasingDoubleKeyFrame(ScaleXAdd.Value + sx, TimeSpan.FromMilliseconds(AniTime(1))); } else if (ScaleXTo.HasValue) { k2_x = new EasingDoubleKeyFrame(ScaleXTo.Value, TimeSpan.FromMilliseconds(AniTime(1))); } if (ScaleYAdd.HasValue) { k2_y = new EasingDoubleKeyFrame(ScaleYAdd.Value + sx, TimeSpan.FromMilliseconds(AniTime(1))); } else if (ScaleYTo.HasValue) { k2_y = new EasingDoubleKeyFrame(ScaleYTo.Value, TimeSpan.FromMilliseconds(AniTime(1))); } if (EasingFunction != null) { k2_x.EasingFunction = EasingFunction; k2_y.EasingFunction = EasingFunction; } Storyboard.SetTargetName(dau1, translationName); Storyboard.SetTargetProperty(dau1, new PropertyPath(ScaleTransform.ScaleXProperty)); Storyboard.SetTargetName(dau2, translationName); Storyboard.SetTargetProperty(dau2, new PropertyPath(ScaleTransform.ScaleYProperty)); if (AniAutoReverse.HasValue) { story.AutoReverse = AniAutoReverse.Value; } if (k2_xFrom != null) { dau1.KeyFrames.Add(k2_xFrom); } if (k2_yFrom != null) { dau2.KeyFrames.Add(k2_yFrom); } if (k2_x != null) { dau1.KeyFrames.Add(k2_x); } if (k2_y != null) { dau2.KeyFrames.Add(k2_y); } storyboardName = "aystory" + story.GetHashCode(); Win.Resources.Add(storyboardName, story); story.Children.Add(dau1); story.Children.Add(dau2); story.Completed += (sndr, evtArgs) => { try { Win.Resources.Remove(storyboardName); Win.UnregisterName(translationName); story.Children.Clear(); story = null; base.CallClientCompleted(); } catch { } }; story.Begin(); return(this); }
protected override void Init() { SetBaseView(); ScaleTransform translation = new ScaleTransform(0, 0); dauX = new DoubleAnimationUsingKeyFrames(); dauY = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } if (translation != null) { var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { } else { Win.RegisterName(translation.GetHashCode().ToString(), translation); } } else { translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Element.RenderTransform = tg; } } #endregion Win.RegisterResource(Story); Story = (Storyboard)Story.CloneCurrentValue(); double danqianX = translation.ScaleX; double danqianY = translation.ScaleY; var k2 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(0)); var k3 = new EasingDoubleKeyFrame(1.1, TimeSpan.FromMilliseconds(300)); var k3_1 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(350)); //var k3_1 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(AniTime(0.7))); Storyboard.SetTargetName(dauX, Win.GetName(translation)); Storyboard.SetTargetProperty(dauX, new PropertyPath(ScaleTransform.ScaleXProperty)); dauX.KeyFrames.Add(k2); dauX.KeyFrames.Add(k3); dauX.KeyFrames.Add(k3_1); Story.Children.Add(dauX); var k4 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(0)); var k5 = new EasingDoubleKeyFrame(1.1, TimeSpan.FromMilliseconds(300)); var k5_1 = new EasingDoubleKeyFrame(1.0, TimeSpan.FromMilliseconds(350)); if (EasingFunction != null) { k3.EasingFunction = EasingFunction; k5.EasingFunction = EasingFunction; } Storyboard.SetTargetName(dauY, Win.GetName(translation)); Storyboard.SetTargetProperty(dauY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauY.KeyFrames.Add(k4); dauY.KeyFrames.Add(k5); dauY.KeyFrames.Add(k5_1); Story.Children.Add(dauY); if (OpacityNeed) { dauOpacty = new DoubleAnimationUsingKeyFrames(); var k6 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(0)); var k6_1 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(350)); if (EasingFunction != null) { k6_1.EasingFunction = EasingFunction; } dauOpacty.KeyFrames.Add(k6); dauOpacty.KeyFrames.Add(k6_1); Storyboard.SetTarget(dauOpacty, Element); dauOpacty.FillBehavior = FillBehavior.Stop; Storyboard.SetTargetProperty(dauOpacty, new PropertyPath(UIElement.OpacityProperty)); Story.Children.Add(dauOpacty); } Story.Completed += Story_Completed; }
protected override void Init() { SetBaseView(); dauX = new DoubleAnimationUsingKeyFrames(); dauY = new DoubleAnimationUsingKeyFrames(); ScaleTransform translation = new ScaleTransform(1, 1); TranslateTransform translationTranslate = new TranslateTransform(0, 0); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Win.RegisterName(translationTranslate.GetHashCode().ToString(), translationTranslate); tg.Children.Add(translationTranslate); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } foreach (var item in tg.Children) { translationTranslate = item as TranslateTransform; if (translationTranslate != null) { break; } } if (translation != null) { var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { } else { Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); } } else { translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); tg.Children.Add(translation); Element.RenderTransform = tg; } if (translationTranslate != null) { var tex = translationTranslate.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { } else { Win.RegisterName(translationTranslate.GetHashCode().ToString(), translationTranslate); } } else { translationTranslate = new TranslateTransform(0, 0); Win.RegisterName(translationTranslate.GetHashCode().ToString(), translationTranslate); tg.Children.Add(translationTranslate); Element.RenderTransform = tg; } } #endregion Win.RegisterResource(Story); Story = (Storyboard)Story.CloneCurrentValue(); double danqianX = translation.ScaleX; double danqianY = translation.ScaleY; var keyspline = new KeySpline(0.55, 0.055, 0.675, 0.19); var keyspline2 = new KeySpline(0.175, 0.885, 0.320, 1); var k3_0 = new SplineDoubleKeyFrame(); k3_0.KeySpline = keyspline; k3_0.Value = 0.1; k3_0.KeyTime = TimeSpan.FromMilliseconds(0); var k3_1 = new SplineDoubleKeyFrame(); k3_1.KeySpline = keyspline2; k3_1.Value = 0.475; k3_1.KeyTime = TimeSpan.FromMilliseconds(AniTime(0.6)); var k3_2 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauX, Win.GetName(translation)); Storyboard.SetTargetProperty(dauX, new PropertyPath(ScaleTransform.ScaleXProperty)); dauX.KeyFrames.Add(k3_0); dauX.KeyFrames.Add(k3_1); dauX.KeyFrames.Add(k3_2); Story.Children.Add(dauX); var k4_0 = new SplineDoubleKeyFrame(); k4_0.KeySpline = keyspline; k4_0.Value = 0.1; k4_0.KeyTime = TimeSpan.FromMilliseconds(0); var k4_1 = new SplineDoubleKeyFrame(); k4_1.KeySpline = keyspline2; k4_1.Value = 0.475; k4_1.KeyTime = TimeSpan.FromMilliseconds(AniTime(0.6)); var k4_2 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauY, Win.GetName(translation)); Storyboard.SetTargetProperty(dauY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauY.KeyFrames.Add(k4_0); dauY.KeyFrames.Add(k4_1); dauY.KeyFrames.Add(k4_2); Story.Children.Add(dauY); dauTranslateY = new DoubleAnimationUsingKeyFrames(); var k5_0 = new SplineDoubleKeyFrame(); k5_0.KeySpline = keyspline; k5_0.Value = -1000; k5_0.KeyTime = TimeSpan.FromMilliseconds(0); var k5_1 = new SplineDoubleKeyFrame(); k5_1.KeySpline = keyspline2; k5_1.Value = 60; k5_1.KeyTime = TimeSpan.FromMilliseconds(AniTime(0.6)); var k5_2 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauTranslateY, Win.GetName(translationTranslate)); Storyboard.SetTargetProperty(dauTranslateY, new PropertyPath(TranslateTransform.YProperty)); dauTranslateY.KeyFrames.Add(k5_0); dauTranslateY.KeyFrames.Add(k5_1); dauTranslateY.KeyFrames.Add(k5_2); Story.Children.Add(dauTranslateY); dauOpacty = new DoubleAnimationUsingKeyFrames(); var k6 = new EasingDoubleKeyFrame(0, TimeSpan.FromMilliseconds(AniTime(0))); var k6_1 = new EasingDoubleKeyFrame(1, TimeSpan.FromMilliseconds(AniTime(0.6))); dauOpacty.KeyFrames.Add(k6); dauOpacty.KeyFrames.Add(k6_1); Storyboard.SetTarget(dauOpacty, Element); dauOpacty.FillBehavior = FillBehavior.Stop; Storyboard.SetTargetProperty(dauOpacty, new PropertyPath(UIElement.OpacityProperty)); Story.Children.Add(dauOpacty); Story.Completed += Story_Completed; }
public override MyAnimateBase Animate() { IsAnimateCompleted = false; Element.Visibility = Visibility.Visible; Element.RenderTransformOrigin = new Point(0.5, 0.5); RotateTransform translation = new RotateTransform(); ScaleTransform translationScale = new ScaleTransform(1, 1); string translationName = ""; string translationScaleName = ""; Storyboard story = new Storyboard(); DoubleAnimationUsingKeyFrames dau = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new RotateTransform(); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); translationScaleName = "ayTranslation" + translationScale.GetHashCode(); Win.RegisterName(translationScaleName, translationScale); tg.Children.Add(translationScale); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as RotateTransform; if (translation != null) { break; } } foreach (var item in tg.Children) { translationScale = item as ScaleTransform; if (translationScale != null) { break; } } if (translation != null) { //当前Y值 var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { translationName = tex.ToString(); } else { translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); } } else { translation = new RotateTransform(); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); Element.RenderTransform = tg; } if (translationScale != null) { var tex = translationScale.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { translationScaleName = tex.ToString(); } else { translationScaleName = "ayTranslation" + translationScale.GetHashCode(); Win.RegisterName(translationScaleName, translationScale); } } else { translationScale = new ScaleTransform(1, 1); translationScaleName = "ayTranslation" + translationScale.GetHashCode(); Win.RegisterName(translationScaleName, translationScale); tg.Children.Add(translationScale); Element.RenderTransform = tg; } } #endregion translation.CenterX = 0.5; translation.CenterY = 0; double angle = translation.Angle; var k2 = new EasingDoubleKeyFrame(angle - 3, TimeSpan.FromMilliseconds(AniTime(0.1))); var k2_1 = new EasingDoubleKeyFrame(angle - 3, TimeSpan.FromMilliseconds(AniTime(0.2))); var k2_2 = new EasingDoubleKeyFrame(angle + 3, TimeSpan.FromMilliseconds(AniTime(0.3))); var k2_3 = new EasingDoubleKeyFrame(angle + 3, TimeSpan.FromMilliseconds(AniTime(0.5))); var k2_4 = new EasingDoubleKeyFrame(angle + 3, TimeSpan.FromMilliseconds(AniTime(0.7))); var k2_5 = new EasingDoubleKeyFrame(angle + 3, TimeSpan.FromMilliseconds(AniTime(0.9))); var k2_6 = new EasingDoubleKeyFrame(angle - 3, TimeSpan.FromMilliseconds(AniTime(0.4))); var k2_7 = new EasingDoubleKeyFrame(angle - 3, TimeSpan.FromMilliseconds(AniTime(0.6))); var k2_8 = new EasingDoubleKeyFrame(angle - 3, TimeSpan.FromMilliseconds(AniTime(0.8))); var k2_9 = new EasingDoubleKeyFrame(angle, TimeSpan.FromMilliseconds(AnimateSpeed)); Storyboard.SetTargetName(dau, translationName); Storyboard.SetTargetProperty(dau, new PropertyPath(RotateTransform.AngleProperty)); var storyboardName = "aystory" + story.GetHashCode(); Win.Resources.Add(storyboardName, story); dau.KeyFrames.Add(k2); dau.KeyFrames.Add(k2_1); dau.KeyFrames.Add(k2_2); dau.KeyFrames.Add(k2_3); dau.KeyFrames.Add(k2_4); dau.KeyFrames.Add(k2_5); dau.KeyFrames.Add(k2_6); dau.KeyFrames.Add(k2_7); dau.KeyFrames.Add(k2_8); dau.KeyFrames.Add(k2_9); story.Children.Add(dau); DoubleAnimationUsingKeyFrames dauScaleX = new DoubleAnimationUsingKeyFrames(); DoubleAnimationUsingKeyFrames dauScaleY = new DoubleAnimationUsingKeyFrames(); double scaleX = translationScale.ScaleX; double scaleY = translationScale.ScaleY; double s1 = scaleX + tadaScale; double s2 = scaleX - tadaScale; double s3 = scaleY + tadaScale; double s4 = scaleY - tadaScale; var k3 = new EasingDoubleKeyFrame(s2, TimeSpan.FromMilliseconds(AniTime(0.1))); var k3_1 = new EasingDoubleKeyFrame(s2, TimeSpan.FromMilliseconds(AniTime(0.2))); var k3_2 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.3))); var k3_3 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.5))); var k3_4 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.7))); var k3_5 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.9))); var k3_6 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.4))); var k3_7 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.6))); var k3_8 = new EasingDoubleKeyFrame(s1, TimeSpan.FromMilliseconds(AniTime(0.8))); var k3_9 = new EasingDoubleKeyFrame(scaleX, TimeSpan.FromMilliseconds(AnimateSpeed)); var k4 = new EasingDoubleKeyFrame(s4, TimeSpan.FromMilliseconds(AniTime(0.1))); var k4_1 = new EasingDoubleKeyFrame(s4, TimeSpan.FromMilliseconds(AniTime(0.2))); var k4_2 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.3))); var k4_3 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.5))); var k4_4 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.7))); var k4_5 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.9))); var k4_6 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.4))); var k4_7 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.6))); var k4_8 = new EasingDoubleKeyFrame(s3, TimeSpan.FromMilliseconds(AniTime(0.8))); var k4_9 = new EasingDoubleKeyFrame(scaleY, TimeSpan.FromMilliseconds(AnimateSpeed)); Storyboard.SetTargetName(dauScaleX, translationScaleName); Storyboard.SetTargetProperty(dauScaleX, new PropertyPath(ScaleTransform.ScaleXProperty)); Storyboard.SetTargetName(dauScaleY, translationScaleName); Storyboard.SetTargetProperty(dauScaleY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauScaleX.KeyFrames.Add(k3); dauScaleX.KeyFrames.Add(k3_1); dauScaleX.KeyFrames.Add(k3_2); dauScaleX.KeyFrames.Add(k3_3); dauScaleX.KeyFrames.Add(k3_4); dauScaleX.KeyFrames.Add(k3_5); dauScaleX.KeyFrames.Add(k3_6); dauScaleX.KeyFrames.Add(k3_7); dauScaleX.KeyFrames.Add(k3_8); dauScaleX.KeyFrames.Add(k3_9); story.Children.Add(dauScaleX); dauScaleY.KeyFrames.Add(k4); dauScaleY.KeyFrames.Add(k4_1); dauScaleY.KeyFrames.Add(k4_2); dauScaleY.KeyFrames.Add(k4_3); dauScaleY.KeyFrames.Add(k4_4); dauScaleY.KeyFrames.Add(k4_5); dauScaleY.KeyFrames.Add(k4_6); dauScaleY.KeyFrames.Add(k4_7); dauScaleY.KeyFrames.Add(k4_8); dauScaleY.KeyFrames.Add(k4_9); story.Children.Add(dauScaleY); story.Completed += (sndr, evtArgs) => { try { Win.Resources.Remove(storyboardName); Win.UnregisterName(translationName); Win.UnregisterName(translationScaleName); dau.KeyFrames.Clear(); dauScaleX.KeyFrames.Clear(); dauScaleY.KeyFrames.Clear(); dauScaleX = null; dauScaleY = null; dau = null; story = null; base.CallClientCompleted(); } catch { } }; story.Begin(); return(this); }
public override MyAnimateBase Animate() { IsAnimateCompleted = false; Element.RenderTransformOrigin = new Point(0.5, 0.5); Element.Visibility = Visibility.Visible; ScaleTransform translation = new ScaleTransform(1, 1); string translationName = ""; Storyboard story = new Storyboard(); DoubleAnimationUsingKeyFrames dauX = new DoubleAnimationUsingKeyFrames(); DoubleAnimationUsingKeyFrames dauY = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(1, 1); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } if (translation != null) { var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { translationName = tex.ToString(); } else { translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); } } else { translation = new ScaleTransform(1, 1); translationName = "ayTranslation" + translation.GetHashCode(); Win.RegisterName(translationName, translation); tg.Children.Add(translation); Element.RenderTransform = tg; } } #endregion var storyboardName = "aystory" + story.GetHashCode(); Win.Resources.Add(storyboardName, story); double danqianX = translation.ScaleX; double danqianY = translation.ScaleY; //var k1 = new EasingDoubleKeyFrame(danqianY, TimeSpan.FromMilliseconds(0)); var k2 = new EasingDoubleKeyFrame(danqianX + ScaleXDiff, TimeSpan.FromMilliseconds(AniTime(0.6)), new ExponentialEase { EasingMode = EasingMode.EaseOut }); var k3 = new EasingDoubleKeyFrame(danqianX, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauX, translationName); Storyboard.SetTargetProperty(dauX, new PropertyPath(ScaleTransform.ScaleXProperty)); dauX.KeyFrames.Add(k2); dauX.KeyFrames.Add(k3); story.Children.Add(dauX); var k4 = new EasingDoubleKeyFrame(danqianY + ScaleYDiff, TimeSpan.FromMilliseconds(AniTime(0.6)), new ExponentialEase { EasingMode = EasingMode.EaseOut }); var k5 = new EasingDoubleKeyFrame(danqianY, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauY, translationName); Storyboard.SetTargetProperty(dauY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauY.KeyFrames.Add(k4); dauY.KeyFrames.Add(k5); story.Children.Add(dauY); //<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="textBlock"> // <EasingDoubleKeyFrame KeyTime="0" Value="1"/> // <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="1.14"> // <EasingDoubleKeyFrame.EasingFunction> // <ExponentialEase EasingMode="EaseOut"/> // </EasingDoubleKeyFrame.EasingFunction> // </EasingDoubleKeyFrame> // <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/> //</DoubleAnimationUsingKeyFrames> //<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="textBlock"> // <EasingDoubleKeyFrame KeyTime="0" Value="1"/> // <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="1.08"> // <EasingDoubleKeyFrame.EasingFunction> // <ExponentialEase EasingMode="EaseOut"/> // </EasingDoubleKeyFrame.EasingFunction> // </EasingDoubleKeyFrame> // <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/> //</DoubleAnimationUsingKeyFrames> story.Completed += (sndr, evtArgs) => { try { Win.Resources.Remove(storyboardName); Win.UnregisterName(translationName); dauX.KeyFrames.Clear(); dauX = null; dauY.KeyFrames.Clear(); dauY = null; story = null; base.CallClientCompleted(); } catch { } }; story.Begin(); return(this); }
protected override void Init() { SetBaseView(); ScaleTransform translation = new ScaleTransform(1, 1); dauX = new DoubleAnimationUsingKeyFrames(); dauY = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } if (translation != null) { var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { } else { Win.RegisterName(translation.GetHashCode().ToString(), translation); } } else { translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Element.RenderTransform = tg; } } Win.RegisterResource(Story); double danqianX = translation.ScaleX; double danqianY = translation.ScaleY; #endregion Story = (Storyboard)Story.Clone(); //var k1 = new EasingDoubleKeyFrame(danqianX, TimeSpan.FromMilliseconds(0)); var k2 = new EasingDoubleKeyFrame(danqianX + 0.3, TimeSpan.FromMilliseconds(AniTime(0.3))); var k3 = new EasingDoubleKeyFrame(danqianX, TimeSpan.FromMilliseconds(AniTime(1)), new ElasticEase { EasingMode = EasingMode.EaseOut, Oscillations = this.Oscillations }); Storyboard.SetTargetName(dauX, Win.GetName(translation)); Storyboard.SetTargetProperty(dauX, new PropertyPath(ScaleTransform.ScaleXProperty)); dauX.KeyFrames.Add(k2); dauX.KeyFrames.Add(k3); Story.Children.Add(dauX); var k0 = new EasingDoubleKeyFrame(danqianY - 0.2, TimeSpan.FromMilliseconds(0)); var k4 = new EasingDoubleKeyFrame(danqianY - 0.2, TimeSpan.FromMilliseconds(AniTime(0.4))); var k5 = new EasingDoubleKeyFrame(danqianY, TimeSpan.FromMilliseconds(AniTime(1)), new ElasticEase { EasingMode = EasingMode.EaseOut, Oscillations = this.Oscillations }); Storyboard.SetTargetName(dauY, Win.GetName(translation)); Storyboard.SetTargetProperty(dauY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauY.KeyFrames.Add(k0); dauY.KeyFrames.Add(k4); dauY.KeyFrames.Add(k5); Story.Children.Add(dauY); Story.Completed -= Story_Completed; Story.Completed += Story_Completed; }
protected override void Init() { SetBaseView(); ScaleTransform translation = new ScaleTransform(1, 1); dauX = new DoubleAnimationUsingKeyFrames(); dauY = new DoubleAnimationUsingKeyFrames(); #region 基本工作,确定类型和name //是否存在TranslateTransform //动画要的类型是否存在 //动画要的类型的name是否存在,不存在就注册,结束后取消注册,删除动画 var ex = Element.RenderTransform; if (ex == null || (ex as System.Windows.Media.MatrixTransform) != null) { var tg = new TransformGroup(); translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Element.RenderTransform = tg; } else { var tg = ex as TransformGroup; foreach (var item in tg.Children) { translation = item as ScaleTransform; if (translation != null) { break; } } if (translation != null) { var tex = translation.GetValue(FrameworkElement.NameProperty); if (tex != null && tex.ToString() != "") { } else { Win.RegisterName(translation.GetHashCode().ToString(), translation); } } else { translation = new ScaleTransform(1, 1); Win.RegisterName(translation.GetHashCode().ToString(), translation); tg.Children.Add(translation); Element.RenderTransform = tg; } } #endregion Win.RegisterResource(Story); double danqianX = translation.ScaleX; double danqianY = translation.ScaleY; Story = (Storyboard)Story.CloneCurrentValue(); //var k1 = new EasingDoubleKeyFrame(danqianY, TimeSpan.FromMilliseconds(0)); var k2 = new EasingDoubleKeyFrame(danqianX + ScaleXDiff, TimeSpan.FromMilliseconds(AniTime(0.6)), new ExponentialEase { EasingMode = EasingMode.EaseOut }); var k3 = new EasingDoubleKeyFrame(danqianX, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauX, Win.GetName(translation)); Storyboard.SetTargetProperty(dauX, new PropertyPath(ScaleTransform.ScaleXProperty)); dauX.KeyFrames.Add(k2); dauX.KeyFrames.Add(k3); Story.Children.Add(dauX); var k4 = new EasingDoubleKeyFrame(danqianY + ScaleYDiff, TimeSpan.FromMilliseconds(AniTime(0.6)), new ExponentialEase { EasingMode = EasingMode.EaseOut }); var k5 = new EasingDoubleKeyFrame(danqianY, TimeSpan.FromMilliseconds(AniTime(1))); Storyboard.SetTargetName(dauY, Win.GetName(translation)); Storyboard.SetTargetProperty(dauY, new PropertyPath(ScaleTransform.ScaleYProperty)); dauY.KeyFrames.Add(k4); dauY.KeyFrames.Add(k5); Story.Children.Add(dauY); //<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="textBlock"> // <EasingDoubleKeyFrame KeyTime="0" Value="1"/> // <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="1.14"> // <EasingDoubleKeyFrame.EasingFunction> // <ExponentialEase EasingMode="EaseOut"/> // </EasingDoubleKeyFrame.EasingFunction> // </EasingDoubleKeyFrame> // <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/> //</DoubleAnimationUsingKeyFrames> //<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="textBlock"> // <EasingDoubleKeyFrame KeyTime="0" Value="1"/> // <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="1.08"> // <EasingDoubleKeyFrame.EasingFunction> // <ExponentialEase EasingMode="EaseOut"/> // </EasingDoubleKeyFrame.EasingFunction> // </EasingDoubleKeyFrame> // <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="1"/> //</DoubleAnimationUsingKeyFrames> Story.Completed -= Story_Completed; Story.Completed += Story_Completed; }