private Storyboard CreateStory(Control control, double start, double end, EventHandler <object> callback = null)
#endif
        {
            var story         = new Storyboard();
            var fadeAnimation = new DoubleAnimation()
            {
                From     = start,
                To       = end,
                Duration = new Duration(Duration)
            };

            fadeAnimation.SetDesiredFrameRate(30);
            if (callback != null)
            {
                story.Completed += callback;
            }
            story.Children.Add(fadeAnimation);
            Storyboard.SetTarget(fadeAnimation, control);
#if WPF
            Storyboard.SetTargetProperty(fadeAnimation, new PropertyPath(UIElement.OpacityProperty));
#elif METRO
            Storyboard.SetTargetProperty(fadeAnimation, "Opacity");
#endif
            return(story);
        }
        private static void DoBlurTansition(
            IBlurParams blurParams,
            FrameworkElement target,
            RoutedEventHandler onLoaded,
            Visibility?visibility)
        {
            var reverse    = Transitionz.IsVisibilityHidden(visibility);
            var blurEffect = new BlurEffect()
            {
                Radius = reverse ? blurParams.To : blurParams.From
            };

            target.Effect = blurEffect;

            if (onLoaded != null && Transitionz.HasFlag(blurParams.TransitionOn, TransitionOn.Once))
            {
                target.Loaded -= onLoaded;
            }

            var a = new DoubleAnimation
            {
                From           = reverse ? blurParams.To : blurParams.From,
                To             = reverse ? blurParams.From : blurParams.To,
                FillBehavior   = blurParams.FillBehavior,
                BeginTime      = TimeSpan.FromMilliseconds(blurParams.BeginTime),
                Duration       = new Duration(TimeSpan.FromMilliseconds(blurParams.Duration)),
                EasingFunction = reverse ? (blurParams.ReverseEase ?? blurParams.Ease) : blurParams.Ease,
                AutoReverse    = blurParams.AutoReverse,
            };

            // Directly adding RepeatBehavior to constructor breaks existing animations, so only add it if properly defined
            if (blurParams.RepeatBehavior == RepeatBehavior.Forever ||
                blurParams.RepeatBehavior.HasDuration ||
                (blurParams.RepeatBehavior.HasDuration && blurParams.RepeatBehavior.Count > 0))
            {
                a.RepeatBehavior = blurParams.RepeatBehavior;
            }

            if (blurParams.To == 0.0)
            {
                a.Completed += (_, __) => target.Effect = null;
            }

            if (visibility.HasValue)
            {
                a.Completed += (_, __) => target.Visibility = visibility.Value;
            }

            a.SetDesiredFrameRate(24);

            var storyboard = new Storyboard();

            storyboard.Children.Add(a);
            Storyboard.SetTarget(a, ((BlurEffect)target.Effect));
            Storyboard.SetTargetProperty(a, new PropertyPath(BlurEffect.RadiusProperty));
            FreezeHelper.SetFreeze(storyboard, true);
            storyboard.Begin();
        }
Exemple #3
0
        void AnimateCooldown(double angle = 1)
        {
            var an  = new DoubleAnimation(angle * 359.9, 0, TimeSpan.FromMilliseconds(_context.Cooldown));
            int fps = _context.Cooldown > 80000 ? 1 : 30;

            DoubleAnimation.SetDesiredFrameRate(an, fps);
            arc.BeginAnimation(Arc.EndAngleProperty, an);
            NumberTimer.IsEnabled = true;
        }
Exemple #4
0
        private static void DoTranslateTransition(ITranslateParams transitionParams, FrameworkElement target, RoutedEventHandler onLoaded, Visibility?visibility)
        {
            if (onLoaded != null && Transitionz.HasFlag(transitionParams.TransitionOn, TransitionOn.Once))
            {
                target.Loaded -= onLoaded;
            }
            var reverse            = Transitionz.IsVisibilityHidden(visibility);
            var translateTransform = new TranslateTransform()
            {
                X = reverse ? transitionParams.To.X : transitionParams.From.X,
                Y = reverse ? transitionParams.To.Y : transitionParams.From.Y,
            };

            target.RenderTransform = translateTransform;

            var x = new DoubleAnimation
            {
                From           = reverse ? transitionParams.To.X : transitionParams.From.X,
                To             = reverse ? transitionParams.From.X : transitionParams.To.X,
                FillBehavior   = transitionParams.FillBehavior,
                BeginTime      = TimeSpan.FromMilliseconds(transitionParams.BeginTime),
                Duration       = new Duration(TimeSpan.FromMilliseconds(transitionParams.Duration)),
                EasingFunction = reverse ? (transitionParams.ReverseEase ?? transitionParams.Ease) : transitionParams.Ease,
                AutoReverse    = transitionParams.AutoReverse,
            };

            var y = new DoubleAnimation
            {
                From           = reverse ? transitionParams.To.Y : transitionParams.From.Y,
                To             = reverse ? transitionParams.From.Y : transitionParams.To.Y,
                FillBehavior   = transitionParams.FillBehavior,
                BeginTime      = TimeSpan.FromMilliseconds(transitionParams.BeginTime),
                Duration       = new Duration(TimeSpan.FromMilliseconds(transitionParams.Duration)),
                EasingFunction = reverse ? (transitionParams.ReverseEase ?? transitionParams.Ease) : transitionParams.Ease,
                AutoReverse    = transitionParams.AutoReverse,
            };

            // Directly adding RepeatBehavior to constructor breaks existing animations, so only add it if properly defined
            if (transitionParams.RepeatBehavior == RepeatBehavior.Forever ||
                transitionParams.RepeatBehavior.HasDuration ||
                (transitionParams.RepeatBehavior.HasDuration && transitionParams.RepeatBehavior.Count > 0))
            {
                x.RepeatBehavior = transitionParams.RepeatBehavior;
                y.RepeatBehavior = transitionParams.RepeatBehavior;
            }

            if (visibility.HasValue)
            {
                x.Completed += (_, __) => target.Visibility = visibility.Value;
            }

            x.SetDesiredFrameRate(24);
            y.SetDesiredFrameRate(24);

            (target.RenderTransform).BeginAnimation(TranslateTransform.XProperty, x);
            (target.RenderTransform).BeginAnimation(TranslateTransform.YProperty, y);
        }
Exemple #5
0
        private static void DoScaleTansition(
            IScaleParams scaleParams,
            FrameworkElement target,
            RoutedEventHandler onLoaded,
            Visibility?visibility)
        {
            var reverse        = Transitionz.IsVisibilityHidden(visibility);
            var scaleTransform = new ScaleTransform()
            {
                ScaleX = reverse ? scaleParams.To.X : scaleParams.From.X,
                ScaleY = reverse ? scaleParams.To.Y : scaleParams.From.Y
            };

            target.LayoutTransform = scaleTransform;

            if (onLoaded != null && Transitionz.HasFlag(scaleParams.TransitionOn, TransitionOn.Once))
            {
                target.Loaded -= onLoaded;
            }

            if (Math.Abs(scaleParams.From.X - scaleParams.To.X) > 0.001)
            {
                var x = new DoubleAnimation
                {
                    From           = reverse ? scaleParams.To.X : scaleParams.From.X,
                    To             = reverse ? scaleParams.From.X : scaleParams.To.X,
                    FillBehavior   = scaleParams.FillBehavior,
                    BeginTime      = TimeSpan.FromMilliseconds(scaleParams.BeginTime),
                    Duration       = new Duration(TimeSpan.FromMilliseconds(scaleParams.Duration)),
                    EasingFunction = reverse ? (scaleParams.ReverseEase ?? scaleParams.Ease) : scaleParams.Ease,
                    AutoReverse    = scaleParams.AutoReverse,
                };

                x.SetDesiredFrameRate(24);
                scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, x);
            }

            if (Math.Abs(scaleParams.From.Y - scaleParams.To.Y) > 0.001)
            {
                var y = new DoubleAnimation
                {
                    From           = reverse ? scaleParams.To.Y : scaleParams.From.Y,
                    To             = reverse ? scaleParams.From.Y : scaleParams.To.Y,
                    FillBehavior   = scaleParams.FillBehavior,
                    BeginTime      = TimeSpan.FromMilliseconds(scaleParams.BeginTime),
                    Duration       = new Duration(TimeSpan.FromMilliseconds(scaleParams.Duration)),
                    EasingFunction = reverse ? (scaleParams.ReverseEase ?? scaleParams.Ease) : scaleParams.Ease,
                    AutoReverse    = scaleParams.AutoReverse,
                };

                y.SetDesiredFrameRate(24);
                scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, y);
            }
        }
Exemple #6
0
        private static void DoOpacityTransition(
            IOpacityParams transitionParams,
            FrameworkElement target,
            RoutedEventHandler onLoaded,
            Visibility?visibility)
        {
            var reverse = Transitionz.IsVisibilityHidden(visibility);

            target.Opacity = reverse ? transitionParams.To : transitionParams.From;

            if (onLoaded != null && Transitionz.HasFlag(transitionParams.TransitionOn, TransitionOn.Once))
            {
                target.Loaded -= onLoaded;
            }

            var a = new DoubleAnimation
            {
                From           = reverse ? transitionParams.To : transitionParams.From,
                To             = reverse ? transitionParams.From : transitionParams.To,
                FillBehavior   = transitionParams.FillBehavior,
                BeginTime      = TimeSpan.FromMilliseconds(transitionParams.BeginTime),
                Duration       = new Duration(TimeSpan.FromMilliseconds(transitionParams.Duration)),
                EasingFunction = reverse ? (transitionParams.ReverseEase ?? transitionParams.Ease) : transitionParams.Ease,
                AutoReverse    = transitionParams.AutoReverse,
            };

            // Directly adding RepeatBehavior to constructor breaks existing animations, so only add it if properly defined
            if (transitionParams.RepeatBehavior == RepeatBehavior.Forever ||
                transitionParams.RepeatBehavior.HasDuration ||
                (transitionParams.RepeatBehavior.HasDuration && transitionParams.RepeatBehavior.Count > 0))
            {
                a.RepeatBehavior = transitionParams.RepeatBehavior;
            }

            a.SetDesiredFrameRate(24);

            var storyboard = new Storyboard();

            storyboard.Children.Add(a);
            Storyboard.SetTarget(a, target);
            Storyboard.SetTargetProperty(a, new PropertyPath(UIElement.OpacityProperty));

            a.Completed += (_, __) =>
            {
                if (visibility.HasValue)
                {
                    target.Visibility = visibility.Value;
                }
                target.Opacity = reverse ? transitionParams.From : transitionParams.To;
                storyboard.Stop();
            };
            storyboard.Begin();
        }
Exemple #7
0
        void AnimateCooldown()
        {
            if (_context == null)
            {
                return;
            }

            var an  = new DoubleAnimation(0, 359.9, TimeSpan.FromMilliseconds(_context.DurationLeft));
            int fps = _context.DurationLeft > 20000 ? 1 : 10;

            DoubleAnimation.SetDesiredFrameRate(an, fps);
            Arc.BeginAnimation(Arc.EndAngleProperty, an);
        }
        public void AnimateVertex(VertexControl target, bool removeDataVertex = false)
        {
            //get scale transform or create new one
            var transform = CustomHelper.GetScaleTransform(target);

            if (transform == null)
            {
                target.RenderTransform = new ScaleTransform();
                transform = target.RenderTransform as ScaleTransform;
                target.RenderTransformOrigin = Centered ? new Point(.5, .5) : new Point(0, 0);
            }
            //create and run animation
#if WPF
            var scaleAnimation = new DoubleAnimation(1, 0, new Duration(TimeSpan.FromSeconds(Duration)));
            Timeline.SetDesiredFrameRate(scaleAnimation, 30);
            scaleAnimation.Completed += (sender, e) => OnCompleted(target, removeDataVertex);
            transform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation);
            transform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation);
#elif METRO
            var sb = new Storyboard();
            //create and run animation
            var scaleAnimation = new DoubleAnimation {
                Duration = new Duration(TimeSpan.FromSeconds(Duration)), From = 1, To = 0
            };
            scaleAnimation.SetDesiredFrameRate(30);
            //scaleAnimation.Completed += (sender, e) => OnCompleted(target as IGraphControl, removeDataVertex);
            Storyboard.SetTarget(scaleAnimation, target);
            Storyboard.SetTargetProperty(scaleAnimation, "(UIElement.RenderTransform).(CompositeTransform.ScaleX)");
            sb.Children.Add(scaleAnimation);

            scaleAnimation = new DoubleAnimation {
                Duration = new Duration(TimeSpan.FromSeconds(Duration)), From = 1, To = 0
            };
            scaleAnimation.Completed += (sender, e) => OnCompleted(target as IGraphControl, removeDataVertex);
            scaleAnimation.SetDesiredFrameRate(30);
            Storyboard.SetTarget(scaleAnimation, target);
            Storyboard.SetTargetProperty(scaleAnimation, "(UIElement.RenderTransform).(CompositeTransform.ScaleY)");
            sb.Children.Add(scaleAnimation);
            sb.Begin();
#else
            throw new NotImplementedException();
#endif
        }
        public void AnimateVertexBackward(VertexControl target)
        {
            var transform = CustomHelper.GetScaleTransform(target);

            if (transform == null)
            {
                target.RenderTransform       = new ScaleTransform();
                target.RenderTransformOrigin = CenterScale ? new Point(.5, .5) : new Point(0, 0);
                return; //no need to back cause default already
            }

            if (transform.ScaleX <= 1 || transform.ScaleY <= 1)
            {
                return;
            }

#if WPF
            var scaleAnimation = new DoubleAnimation(transform.ScaleX, 1, new Duration(TimeSpan.FromSeconds(Duration)));
            Timeline.SetDesiredFrameRate(scaleAnimation, 30);
            transform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation);
            transform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation);
#elif METRO
            var sb             = new Storyboard();
            var scaleAnimation = new DoubleAnimation {
                Duration = new Duration(TimeSpan.FromSeconds(Duration)), From = transform.ScaleX, To = 1
            };
            scaleAnimation.SetDesiredFrameRate(30);
            Storyboard.SetTarget(scaleAnimation, target);
            Storyboard.SetTargetProperty(scaleAnimation, "(UIElement.RenderTransform).(CompositeTransform.ScaleX)");
            sb.Children.Add(scaleAnimation);
            scaleAnimation = new DoubleAnimation {
                Duration = new Duration(TimeSpan.FromSeconds(Duration)), From = transform.ScaleX, To = 1
            };
            scaleAnimation.SetDesiredFrameRate(30);
            Storyboard.SetTarget(scaleAnimation, target);
            Storyboard.SetTargetProperty(scaleAnimation, "(UIElement.RenderTransform).(CompositeTransform.ScaleY)");
            sb.Children.Add(scaleAnimation);
            sb.Begin();
#else
            throw new NotImplementedException();
#endif
        }
        private void RunAnimation(IGraphControl target, bool removeDataObject)
        {
            //create and run animation
            var story         = new Storyboard();
            var fadeAnimation = new DoubleAnimation {
                Duration = new Duration(TimeSpan.FromSeconds(Duration)), FillBehavior = FillBehavior.Stop, From = 1, To = 0
            };

            fadeAnimation.SetDesiredFrameRate(30);
            fadeAnimation.Completed += (sender, e) => OnCompleted(target, removeDataObject);
            story.Children.Add(fadeAnimation);
            Storyboard.SetTarget(fadeAnimation, target as FrameworkElement);
#if WPF
            Storyboard.SetTargetProperty(fadeAnimation, new PropertyPath(UIElement.OpacityProperty));
            story.Begin(target as FrameworkElement);
#elif METRO
            Storyboard.SetTargetProperty(fadeAnimation, "Opacity");
            story.Begin();
#else
            throw new NotImplementedException();
#endif
        }