Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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;
        }