public override void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } zIndexController.Stack(fromSlide, toSlide); if (FromStoryboard != null) { BeginStoryboard(FromStoryboard, FromStyle, fromSlide, zIndexController, () => { fromSlide.Visibility = Visibility.Hidden; zIndexController.Stack(toSlide, fromSlide); }); } if (ToStoryboard != null) { BeginStoryboard(ToStoryboard, ToStyle, toSlide, zIndexController, () => { fromSlide.Visibility = Visibility.Hidden; zIndexController.Stack(toSlide, fromSlide); }); } }
public override void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } // Set up time points var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Duration.TotalSeconds / 2)); // From var fromAnimation = new DoubleAnimationUsingKeyFrames(); fromAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(1, zeroKeyTime)); fromAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime, _sineEase)); // To var toAnimation = new DoubleAnimationUsingKeyFrames(); toAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(0, zeroKeyTime)); toAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, endKeyTime, _sineEase)); // Preset fromSlide.Opacity = 1; toSlide.Opacity = 0; // Set up events this.CompletedWithEnd(toAnimation, zIndexController, () => { toSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 1; toSlide.Opacity = 1; fromSlide.Visibility = Visibility.Hidden; }); this.CompletedWithEnd(fromAnimation, zIndexController, () => { fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 1; toSlide.BeginAnimation(UIElement.OpacityProperty, toAnimation); fromSlide.Visibility = Visibility.Hidden; }); // Animate fromSlide.BeginAnimation(UIElement.OpacityProperty, fromAnimation); zIndexController.Stack(toSlide, fromSlide); }
public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) throw new ArgumentNullException(nameof(fromSlide)); if (toSlide == null) throw new ArgumentNullException(nameof(toSlide)); if (zIndexController == null) throw new ArgumentNullException(nameof(zIndexController)); var horizontalProportion = Math.Max(1.0 - origin.X, 1.0 * origin.X); var verticalProportion = Math.Max(1.0 - origin.Y, 1.0 * origin.Y); var radius = Math.Sqrt(Math.Pow(toSlide.ActualWidth * horizontalProportion, 2) + Math.Pow(toSlide.ActualHeight * verticalProportion, 2)); var scaleTransform = new ScaleTransform(0, 0); var translateTransform = new TranslateTransform(toSlide.ActualWidth * origin.X, toSlide.ActualHeight * origin.Y); var transformGroup = new TransformGroup(); transformGroup.Children.Add(scaleTransform); transformGroup.Children.Add(translateTransform); var ellipseGeomotry = new EllipseGeometry() { RadiusX = radius, RadiusY = radius, Transform = transformGroup }; toSlide.SetCurrentValue(UIElement.ClipProperty, ellipseGeomotry); zIndexController.Stack(toSlide, fromSlide); var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var midKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200)); var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400)); var opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, midKeyTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime)); opacityAnimation.Completed += (sender, args) => { fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 0; }; fromSlide.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); var scaleAnimation = new DoubleAnimationUsingKeyFrames(); scaleAnimation.Completed += (sender, args) => { toSlide.SetCurrentValue(UIElement.ClipProperty, null); fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 0; }; scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, zeroKeyTime)); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, endKeyTime)); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation); }
public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) throw new ArgumentNullException(nameof(fromSlide)); if (toSlide == null) throw new ArgumentNullException(nameof(toSlide)); if (zIndexController == null) throw new ArgumentNullException(nameof(zIndexController)); var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var midishKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200)); var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400)); //back out old slide setup var scaleTransform = new ScaleTransform(1, 1); fromSlide.RenderTransform = scaleTransform; var scaleAnimation = new DoubleAnimationUsingKeyFrames(); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime)); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(.8, endKeyTime)); scaleAnimation.Completed += (sender, args) => { fromSlide.RenderTransform = null; }; var opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime)); opacityAnimation.Completed += (sender, args) => { fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 0; }; //slide in new slide setup var translateTransform = new TranslateTransform(0, toSlide.ActualHeight); toSlide.RenderTransform = translateTransform; var slideAnimation = new DoubleAnimationUsingKeyFrames(); slideAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(toSlide.ActualHeight, zeroKeyTime)); slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(toSlide.ActualHeight, midishKeyTime) { EasingFunction = _sineEase}); slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime) { EasingFunction = _sineEase }); //kick off! translateTransform.BeginAnimation(TranslateTransform.YProperty, slideAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation); fromSlide.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); zIndexController.Stack(toSlide, fromSlide); }
public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } fromSlide.Opacity = 0; toSlide.Opacity = 1; var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400)); //slide in new slide setup var translateTransform = new ScaleTransform(0.3, 0.3); toSlide.RenderTransform = translateTransform; var slideAnimation = new DoubleAnimationUsingKeyFrames(); slideAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(0.3, zeroKeyTime)); slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, endKeyTime) { EasingFunction = _sineEase }); //kick off! translateTransform.BeginAnimation(ScaleTransform.ScaleXProperty, slideAnimation); translateTransform.BeginAnimation(ScaleTransform.ScaleYProperty, slideAnimation); zIndexController.Stack(toSlide, fromSlide); }
public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } // Set up time points var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var endKeyTime = KeyTime.FromTimeSpan(Duration); // Set up coordinates double fromStartX = 0, fromEndX = 0, toStartX = 0, toEndX = 0; double fromStartY = 0, fromEndY = 0, toStartY = 0, toEndY = 0; if (Direction == SlideDirection.Left) { fromEndX = -fromSlide.ActualWidth; toStartX = toSlide.ActualWidth; } else if (Direction == SlideDirection.Right) { fromEndX = fromSlide.ActualWidth; toStartX = -toSlide.ActualWidth; } else if (Direction == SlideDirection.Up) { fromEndY = -fromSlide.ActualHeight; toStartY = toSlide.ActualHeight; } else if (Direction == SlideDirection.Down) { fromEndY = fromSlide.ActualHeight; toStartY = -toSlide.ActualHeight; } // From var fromTransform = new TranslateTransform(fromStartX, fromStartY); fromSlide.RenderTransform = fromTransform; var fromXAnimation = new DoubleAnimationUsingKeyFrames(); fromXAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(fromStartX, zeroKeyTime)); fromXAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(fromEndX, endKeyTime, _sineEase)); var fromYAnimation = new DoubleAnimationUsingKeyFrames(); fromYAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(fromStartY, zeroKeyTime)); fromYAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(fromEndY, endKeyTime, _sineEase)); // To var toTransform = new TranslateTransform(toStartX, toStartY); toSlide.RenderTransform = toTransform; var toXAnimation = new DoubleAnimationUsingKeyFrames(); toXAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(toStartX, zeroKeyTime)); toXAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(toEndX, endKeyTime, _sineEase)); var toYAnimation = new DoubleAnimationUsingKeyFrames(); toYAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(toStartY, zeroKeyTime)); toYAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(toEndY, endKeyTime, _sineEase)); // Set up events fromXAnimation.Completed += (sender, args) => { fromTransform.BeginAnimation(TranslateTransform.XProperty, null); fromTransform.X = fromEndX; fromSlide.RenderTransform = null; }; fromYAnimation.Completed += (sender, args) => { fromTransform.BeginAnimation(TranslateTransform.YProperty, null); fromTransform.Y = fromEndY; fromSlide.RenderTransform = null; }; toXAnimation.Completed += (sender, args) => { toTransform.BeginAnimation(TranslateTransform.XProperty, null); toTransform.X = toEndX; toSlide.RenderTransform = null; }; toYAnimation.Completed += (sender, args) => { toTransform.BeginAnimation(TranslateTransform.YProperty, null); toTransform.Y = toEndY; toSlide.RenderTransform = null; }; // Animate fromTransform.BeginAnimation(TranslateTransform.XProperty, fromXAnimation); fromTransform.BeginAnimation(TranslateTransform.YProperty, fromYAnimation); toTransform.BeginAnimation(TranslateTransform.XProperty, toXAnimation); toTransform.BeginAnimation(TranslateTransform.YProperty, toYAnimation); zIndexController.Stack(toSlide, fromSlide); }
public override void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } var horizontalProportion = Math.Max(1.0 - origin.X, 1.0 * origin.X); var verticalProportion = Math.Max(1.0 - origin.Y, 1.0 * origin.Y); var radius = Math.Sqrt(Math.Pow(toSlide.ActualWidth * horizontalProportion, 2) + Math.Pow(toSlide.ActualHeight * verticalProportion, 2)); var scaleTransform = new ScaleTransform(0, 0); var translateTransform = new TranslateTransform(toSlide.ActualWidth * origin.X, toSlide.ActualHeight * origin.Y); var transformGroup = new TransformGroup(); transformGroup.Children.Add(scaleTransform); transformGroup.Children.Add(translateTransform); var ellipseGeomotry = new EllipseGeometry() { RadiusX = radius, RadiusY = radius, Transform = transformGroup }; toSlide.SetCurrentValue(UIElement.ClipProperty, ellipseGeomotry); zIndexController.Stack(toSlide, fromSlide); var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var midKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200)); var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400)); var opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, midKeyTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime)); var scaleAnimation = new DoubleAnimationUsingKeyFrames(); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, zeroKeyTime)); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, endKeyTime)); this.CompletedWithEnd(opacityAnimation, zIndexController, () => { fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 1; fromSlide.Visibility = Visibility.Hidden; }); this.CompletedWithEnd(scaleAnimation, zIndexController, () => { toSlide.SetCurrentValue(UIElement.ClipProperty, null); fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.RenderTransform = null; toSlide.RenderTransform = null; fromSlide.Opacity = 1; fromSlide.Visibility = Visibility.Hidden; }); fromSlide.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation); }
public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } var zeroKeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero); var midishKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(200)); var endKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400)); //back out old slide setup var scaleTransform = new ScaleTransform(1, 1); fromSlide.RenderTransform = scaleTransform; var scaleAnimation = new DoubleAnimationUsingKeyFrames(); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime)); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(.8, endKeyTime)); scaleAnimation.Completed += (sender, args) => { fromSlide.RenderTransform = null; }; var opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, zeroKeyTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime)); opacityAnimation.Completed += (sender, args) => { fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 0; }; //slide in new slide setup var translateTransform = new TranslateTransform(0, toSlide.ActualHeight); toSlide.RenderTransform = translateTransform; var slideAnimation = new DoubleAnimationUsingKeyFrames(); slideAnimation.KeyFrames.Add(new LinearDoubleKeyFrame(toSlide.ActualHeight, zeroKeyTime)); slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(toSlide.ActualHeight, midishKeyTime) { EasingFunction = _sineEase }); slideAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, endKeyTime) { EasingFunction = _sineEase }); //kick off! translateTransform.BeginAnimation(TranslateTransform.YProperty, slideAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation); fromSlide.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); zIndexController.Stack(toSlide, fromSlide); }
public void Wipe(TransitionerSlide fromSlide, TransitionerSlide toSlide, Point origin, IZIndexController zIndexController) { if (fromSlide == null) { throw new ArgumentNullException(nameof(fromSlide)); } if (toSlide == null) { throw new ArgumentNullException(nameof(toSlide)); } if (zIndexController == null) { throw new ArgumentNullException(nameof(zIndexController)); } if (this.PointOriginType == PointOriginType.MousePosition) { // Do :按鼠标位置计算 var postion = Mouse.GetPosition(toSlide); double x = postion.X / toSlide.ActualWidth; double y = postion.Y / toSlide.ActualHeight; origin = new Point(x, y); } else if (this.PointOriginType == PointOriginType.RandomInner) { // Do :随机计算 Random random = new Random(); origin = new Point(random.NextDouble(), random.NextDouble()); } else if (this.PointOriginType == PointOriginType.Center) { // Do :中心点计算 origin = new Point(0.5, 0.5); } var horizontalProportion = Math.Max(1.0 - origin.X, 1.0 * origin.X); var verticalProportion = Math.Max(1.0 - origin.Y, 1.0 * origin.Y); var radius = Math.Sqrt(Math.Pow(toSlide.ActualWidth * horizontalProportion, 2) + Math.Pow(toSlide.ActualHeight * verticalProportion, 2)); var scaleTransform = new ScaleTransform(0, 0); var translateTransform = new TranslateTransform(toSlide.ActualWidth * origin.X, toSlide.ActualHeight * origin.Y); var transformGroup = new TransformGroup(); transformGroup.Children.Add(scaleTransform); transformGroup.Children.Add(translateTransform); var ellipseGeomotry = new EllipseGeometry() { RadiusX = radius, RadiusY = radius, Transform = transformGroup }; toSlide.SetCurrentValue(UIElement.ClipProperty, ellipseGeomotry); zIndexController.Stack(toSlide, fromSlide); //var zeroKeyTime = KeyTime.FromTimeSpan(StartTime); //var midKeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(400)); //var endKeyTime = KeyTime.FromTimeSpan(Duration); var opacityAnimation = new DoubleAnimationUsingKeyFrames(); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, StartTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, MidTime)); opacityAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, Duration)); opacityAnimation.Completed += (sender, args) => { fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 0; }; fromSlide.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); var scaleAnimation = new DoubleAnimationUsingKeyFrames(); scaleAnimation.Completed += (sender, args) => { toSlide.SetCurrentValue(UIElement.ClipProperty, null); fromSlide.BeginAnimation(UIElement.OpacityProperty, null); fromSlide.Opacity = 0; }; scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(0, MidTime)); scaleAnimation.KeyFrames.Add(new EasingDoubleKeyFrame(1, Duration)); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimation); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimation); }