/// <internalonly /> protected override ProceduralAnimation CreateTransitionAnimation(Panel container, EffectDirection direction) { if (_scaleTransform == null) { _scaleTransform = new ScaleTransform(); container.RenderTransform = _scaleTransform; container.RenderTransformOrigin = new Point(0.5, 0.5); } TweenInterpolation interpolation = GetEffectiveInterpolation(); TimeSpan shortDuration = TimeSpan.FromMilliseconds(Duration.TotalMilliseconds / 3); FlipScaleAnimation scaleAnimation = new FlipScaleAnimation(Duration, _scaleTransform, (direction == EffectDirection.Forward ? 180 : -180)); scaleAnimation.Interpolation = interpolation; DoubleAnimation frontAnimation = new DoubleAnimation(container.Children[1], UIElement.OpacityProperty, shortDuration, (direction == EffectDirection.Forward ? 0 : 1)); frontAnimation.Interpolation = interpolation; frontAnimation.StartDelay = shortDuration; DoubleAnimation backAnimation = new DoubleAnimation(container.Children[0], UIElement.OpacityProperty, shortDuration, (direction == EffectDirection.Forward ? 1 : 0)); backAnimation.Interpolation = interpolation; backAnimation.StartDelay = shortDuration; return new ProceduralAnimationSet(scaleAnimation, frontAnimation, backAnimation); }
/// <internalonly /> protected override ProceduralAnimation CreateTransitionAnimation(Panel container, EffectDirection direction) { if (_scaleTransform == null) { _scaleTransform = new ScaleTransform(); container.RenderTransform = _scaleTransform; container.RenderTransformOrigin = new Point(0.5, 0.5); } TweenInterpolation interpolation = GetEffectiveInterpolation(); TimeSpan shortDuration = TimeSpan.FromMilliseconds(Duration.TotalMilliseconds / 3); FlipScaleAnimation scaleAnimation = new FlipScaleAnimation(Duration, _scaleTransform, (direction == EffectDirection.Forward ? 180 : -180)); scaleAnimation.Interpolation = interpolation; DoubleAnimation frontAnimation = new DoubleAnimation(container.Children[1], UIElement.OpacityProperty, shortDuration, (direction == EffectDirection.Forward ? 0 : 1)); frontAnimation.Interpolation = interpolation; frontAnimation.StartDelay = shortDuration; DoubleAnimation backAnimation = new DoubleAnimation(container.Children[0], UIElement.OpacityProperty, shortDuration, (direction == EffectDirection.Forward ? 1 : 0)); backAnimation.Interpolation = interpolation; backAnimation.StartDelay = shortDuration; return(new ProceduralAnimationSet(scaleAnimation, frontAnimation, backAnimation)); }