«Анимация» MapPolyLine в Silverlight - PullRequest
1 голос
/ 26 января 2011

Мне нужно анимировать MapPolyLine таким образом, чтобы при заданном событии начальный контакт зацеплялся до конечного. Подход, который я рассматриваю, заключается в том, чтобы анимировать кадры таким образом, чтобы я разделял MapPolyLine на n чисел сегментов и уменьшал интервалы времени между каждым кадром в соответствии с логикой моего выбора (для простоты, скажем, ts = ts / 2 после каждого цикл).

Я знаю, что нельзя анимировать MapPolyLine, но можно изменить внешний вид линии, обновив широту и долготу конечной позиции. Мой вопрос касается сроков. Мой опыт работы с многопоточностью минимален, поэтому я не хотел рисковать тем, что пользователь столкнется с ошибкой на основе многопоточности, которую может быть трудно диагностировать. Должен ли я:

  • используйте простой метод DispatcherTimer и тик
  • используйте BackgroundWorker, который сообщает о прогрессе каждый раз, когда TimeSpan истек
  • использовать фиктивную анимацию и прикрепить обработчик событий к событию рендеринга
  • решение, отличное от вышеуказанных вариантов?

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 27 января 2011

Принято решение использовать DispatcherTimer с учетом количества времени, которое займет анимация - создав отдельный объект анимации, который содержит состояние и собственный таймер диспетчеризации, он оказался более эффективным, чем использование отдельных потоков, поскольку обратный вызов означал быпрерывая основной поток пользовательского интерфейса и основываясь на требованиях, весьма маловероятно, что будет более 2-3 таких анимаций, происходящих одновременно, при 95% или более, что составляет только 1 анимацию за раз.

...