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(); }
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; }
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); }
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); } }
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(); }
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 }