public static Task <FrameworkElement> AnimateAsync(this FrameworkElement element, IEnumerable <Timeline> animations, AnimationParameters animationParameters = null) { var tcs = new TaskCompletionSource <FrameworkElement>(); var sb = AnimationManager.AnimationStoryboard(element, animations, animationParameters, () => tcs.SetResult(element)); Task t = AnimationManager.SplashScreenGone(); #if NETFX_CORE || WINDOWS_81_PORTABLE t.ContinueWith(x => element.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, sb.Begin)); #endif #if WINDOWS_PHONE t.ContinueWith(x => element.Dispatcher.BeginInvoke(sb.Begin)); #endif return(tcs.Task); }
public async static Task <FrameworkElement> SkewToAsync(this FrameworkElement element, double seconds, Point skew, EasingFunctionBase easingFunction = null, AnimationParameters animationParameters = null) { if (seconds > 0) { return(await AnimateAsync(element, SkewToAnimation(element, seconds, skew, easingFunction), animationParameters)); } AnimationManager.PrepareElement(element); var transform = element.RenderTransform as CompositeTransform; if (transform == null) { return(element); } transform.SkewX = skew.X; transform.SkewY = skew.Y; return(element); }
public static Storyboard SkewToStoryboard(this FrameworkElement element, double seconds, Point skew, EasingFunctionBase easingFunction = null, AnimationParameters animationParameters = null, Action completedAction = null) { return(AnimationManager.AnimationStoryboard(element, SkewToAnimation(element, seconds, skew, easingFunction), animationParameters, completedAction)); }
public static async Task <FrameworkElement> MoveToAsync(this FrameworkElement element, double seconds, Point point, EasingFunctionBase easingFunction = null, AnimationParameters animationParameters = null) { if (seconds > 0.0) { return(await AnimateAsync(element, MoveToAnimation(element, seconds, point, easingFunction), animationParameters)); } AnimationManager.PrepareElement(element); var transform = element.RenderTransform as CompositeTransform; if (transform == null) { return(element); } transform.TranslateX = point.X; transform.TranslateY = point.Y; return(element); }
public static async Task <FrameworkElement> RotateAsync(this FrameworkElement element, double seconds, double rotation, EasingFunctionBase easingFunction = null, AnimationParameters animationParameters = null) { if (!(seconds <= 0)) { return(await AnimateAsync(element, RotateAnimation(element, seconds, rotation, easingFunction), animationParameters)); } AnimationManager.PrepareElement(element); var transform = element.RenderTransform as CompositeTransform; if (transform == null) { return(element); } transform.Rotation = rotation; return(element); }
public static Storyboard AnimationStoryboard( FrameworkElement element, IEnumerable<Timeline> animations, AnimationParameters animationParameters = null, Action completedAction = null) { PrepareElement(element); var sb = new Storyboard(); foreach (var animation in animations) { Storyboard.SetTarget(animation, element); sb.Children.Add(animation); } sb.Completed += (sender, o) => { Manager.RemoveStoryboard(element, sb); if (completedAction != null) completedAction(); }; Manager.AddStoryboard(element, sb); if (animationParameters != null) { if (animationParameters.SpeedRatio > 0.0) sb.SpeedRatio = animationParameters.SpeedRatio; if (animationParameters.RepeatCount > 0) sb.RepeatBehavior = new RepeatBehavior(animationParameters.RepeatCount); if (animationParameters.RepeatDuration > 0) sb.RepeatBehavior = new RepeatBehavior(TimeSpan.FromSeconds(animationParameters.RepeatDuration)); if (animationParameters.Forever) sb.RepeatBehavior = RepeatBehavior.Forever; sb.AutoReverse = animationParameters.AutoReverse; if (animationParameters.OpacityFromZero) element.Opacity = 0; if (animationParameters.Delay > 0) sb.BeginTime = TimeSpan.FromSeconds(animationParameters.Delay); } return sb; }