Ejemplo n.º 1
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);
            }
        }
Ejemplo n.º 2
0
 public static void SetLayoutScale(UIElement element, IScaleParams value)
 {
     element.SetValue(LayoutScaleProperty, value);
 }