Анимация пути, которая продвигается «шагами» - PullRequest
1 голос
/ 13 сентября 2011

Я пытаюсь создать анимацию пути в WPF.Он состоит из 3 точек, которые образуют треугольник.И вдоль этого пути находится анимируемая точка.

Пока все это работает, тем не менее, оно работает плавно по мере увеличения продолжительности (как и следовало ожидать!

Что бы я хотеланимация прогрессирует постепенно, дискретными шагами. Я думал, что могу использовать какую-то дискретную анимацию ключевых кадров, но мне не повезло.

Пока у меня есть путь и раскадровка, которая(к сожалению!) работает слишком плавно.

Есть ли способ обновлять анимацию каждые x секунд?

// Construct the animation path.
var pFigure = new PathFigure
      {
       StartPoint = pathToWalk[0],
       Segments = new PathSegmentCollection
               {
                 new LineSegment(pathToWalk[1], false),
                 new LineSegment(pathToWalk[2], false),
                 new LineSegment(pathToWalk[0], false)
                }
       };


var animationPath = new PathGeometry();
animationPath.Figures.Add(pFigure);

// Freeze the PathGeometry for performance
animationPath.Freeze();


// Create a PointAnimationgUsingPath to move the Dot(EllipseGeometry)
// along the animation path.
var dotAnimation = new PointAnimationUsingPath
                 {
                 PathGeometry = animationPath,
                 Duration = TimeSpan.FromSeconds(5),
                 RepeatBehavior = RepeatBehavior.Forever
                 };

// Set the animation to target the Center property of the
// Dot(EllipseGeometry) named "theDotToAnimate".

Storyboard.SetTargetName(dotAnimation, "theDotToAnimate");
Storyboard.SetTargetProperty(dotAnimation, new PropertyPath(EllipseGeometry.CenterProperty));

// Create a Storyboard to contain and apply the animation.
var pathAnimationStoryboard = new Storyboard
                  {
                   RepeatBehavior = RepeatBehavior.Forever,
                   AutoReverse = true
                   };
pathAnimationStoryboard.Children.Add(dotAnimation);


// Start the Storyboard when ellipsePath is loaded.
dotPath.Loaded += (sender, e) => pathAnimationStoryboard.Begin(theWindowToAddto);

Я думал о том, как получить анимационные часы из анимации и сделать паузуи не останавливая его во взгляде. Это может сработать, но это будет самой уродливой вещью!

Кто-нибудь может помочь?

РЕДАКТИРОВАТЬ: Я также заметил IsAdditive = "True" каквариант, может быть, есть способ просто слегка подтолкнуть его каждый раз?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...