В WPF как я могу добавить функцию замедления к моей анимации из кода позади? - PullRequest
1 голос
/ 15 сентября 2010

Я создаю doubleAniation в коде и хочу добавить в него функцию замедления, так как мне это сделать?

Ответы [ 3 ]

9 голосов
/ 19 июня 2013

Нет необходимости использовать DoubleAnimationUsingKeyFrames - это можно сделать просто DoubleAnimation:

CircleEase easing = new CircleEase();  // or whatever easing class you want
easing.EasingMode = EasingMode.EaseInOut;
DoubleAnimation scrollQueue = new DoubleAnimation();
scrollQueue.By = -singleScrollAmt;
scrollQueue.EasingFunction = easing;
scrollQueue.Duration = TimeSpan.FromSeconds(0.5);
MyTextBlock.BeginAnimation(Canvas.TopProperty, scrollQueue);
5 голосов
/ 28 ноября 2010

Вот как я это делаю:

        DoubleAnimationUsingKeyFrames compassRoseAnimation = new DoubleAnimationUsingKeyFrames();
        compassRoseAnimation.Duration = new Duration(TimeSpan.FromSeconds(2));
        QuarticEase easingFunction = new QuarticEase();
        easingFunction.EasingMode = EasingMode.EaseInOut;
        EasingDoubleKeyFrame startAnimation = new EasingDoubleKeyFrame(previousRotationDegrees, KeyTime.FromPercent(0));
        EasingDoubleKeyFrame endAnimation = new EasingDoubleKeyFrame(newRotationDegrees, KeyTime.FromPercent(1.0), easingFunction);
        compassRoseAnimation.KeyFrames.Add(startAnimation);
        compassRoseAnimation.KeyFrames.Add(endAnimation);

        RotateTransform rotateTransform = new RotateTransform();
        CompassWithNumbersControl.RenderTransform = rotateTransform;
        rotateTransform.BeginAnimation(RotateTransform.AngleProperty, compassRoseAnimation);
0 голосов
/ 21 сентября 2010

Я сам все понял.Я искал свойство Easing, но на самом деле оно называется KeySpline, и вместо этого я должен использовать DoubleAniamtionUsingKeyFrames, чтобы получить функцию ослабления.

...