2010-11-29 3 views
1

Я установил раскадровку для анимации эллипса вдоль определенного пути, как показано здесь: http://msdn.microsoft.com/en-us/library/ms743217.aspx, сделав несколько модификаций в соответствии с моими потребностями. Однако, когда я пытаюсь запустить мою программу, она дает мне AnimationException:Ошибка анимации пути WPF

Cannot animate the 'Center' property on a 'System.Windows.Media.EllipseGeometry' using a 'System.Windows.Media.Animation.PointAnimationUsingPath'. For details see the inner exception.

Внутреннее исключение просто гласит: Value does not fall within the expected range.. Я никогда раньше не использовал раскадровку, поэтому я понятия не имею, что делать здесь.

EDIT: Вот мой код как есть. Он прошел через некоторые изменения, и я еще не вынул старые комментарии, так что согласитесь, как есть.

 Location current = null;// locationEnum.Current; 
     Point start = new Point(); 
     var segment = new PolyBezierSegment(); 
     foreach (var location in locations) { 
      if (current == null) { 
       current = location; 
       start = new Point(current.X, current.Y); 
      } 
      else { 
       //MessageBox.Show(location.X.ToString() + "," + location.Y.ToString()); 
       segment.Points.Add(new Point(location.X, location.Y)); 
       //current = location; 
      } 
     } 
     //MessageBox.Show(start.ToString()); 
     var ellipseGeometry = new EllipseGeometry(start, 15, 15); 
     var ellipsePath = new System.Windows.Shapes.Path { 
      Fill = new SolidColorBrush(Colors.Red), 
      Data = ellipseGeometry, 
      Margin = new Thickness(15) 
     }; 
     cnvMap.Children.Add(ellipsePath); 
     var animationPath = new PathGeometry(); 
     var figure = new PathFigure(); 
     figure.StartPoint = start; 
     figure.Segments.Add(segment); 
     animationPath.Figures.Add(figure); 
     animationPath.Freeze(); 
     var animation = new PointAnimationUsingPath { 
      PathGeometry = animationPath, 
      Duration = TimeSpan.FromSeconds(10) 
     }; 
     Storyboard.SetTarget(animation, ellipseGeometry); 
     Storyboard.SetTargetProperty(
      animation, new PropertyPath(EllipseGeometry.CenterProperty)); 
     Storyboard storyboard = new Storyboard(); 
     storyboard.Children.Add(animation); 
     ellipsePath.Loaded += (sender, e) => { 
      //MessageBox.Show("Horray"); 
      storyboard.Begin(); 
     }; 
+0

Какая модификация вызвала сбой анимации? – Heinzi 2010-11-29 01:55:28

+0

Опубликуйте свой код, с ошибкой, чтобы смутно помочь без него. – Donnie 2010-11-29 01:56:54

ответ

1

Я не могу решить вашу проблему, но я могу сказать вам, как я его отладки:

  • Вариант 1: Заменить код с чем-то, как можно ближе к примеру кода, (и которые, как ожидается, будут работать). Затем медленно начинайте применять изменения до тех пор, пока они перестанут работать. Последнее изменение, которое вы сделали, скорее всего является причиной проблемы. Если это не поможет, напишите здесь код, обе версии проблемной строки кода.

  • Вариант 2: Сообщите Visual Studio о прекращении всех исключений (Строка меню/Отладка/Исключения) и попытайтесь поймать момент, когда выбрано внутреннее исключение. Изучите окно «Стек вызовов» и «Локальные переменные», чтобы узнать , значение «вне ожидаемого диапазона».

Смежные вопросы