[WPF] Анимация большого кол-ва объектов
От: adanov  
Дата: 28.06.09 10:37
Оценка:
Недоволен низкой производительностью.
Скорее всего делал неправильно:

Есть список объектов.
Их аватары отображаются в виде равнобедренных треугольников (Polygon) на канвасе.
Канвас обновляется 30 раз в сек через DispatcherTimer (для 10 объектов).
В TimerCallback пересчитывается положение и направление объектов,
и перезаписываются новые положения точек в Polygon.Points (по три точки на объект).
При кол-ве объектов около 1000, частота снижается до нескольких герц

Пробовал отключать канвас от контрола
  this.Content = null; 
  // перезапись точек
  this.Content = canvas;

Существенного ускорения не наблюдалось.

Есть ли более быстрые варианты отображения множества перерисовываемых аватаров?
wpf canvas polygon
Re: [WPF] Анимация большого кол-ва объектов
От: Vladek Россия Github
Дата: 28.06.09 14:17
Оценка:
Здравствуйте, adanov, Вы писали:

A>Недоволен низкой производительностью.

A>Скорее всего делал неправильно:

Ага, сегодня услышал такую фразу "Reinvent WPF in the application".

A>Есть список объектов.

A>Их аватары отображаются в виде равнобедренных треугольников (Polygon) на канвасе.
A>Канвас обновляется 30 раз в сек через DispatcherTimer (для 10 объектов).
A>В TimerCallback пересчитывается положение и направление объектов,
A>и перезаписываются новые положения точек в Polygon.Points (по три точки на объект).
A>При кол-ве объектов около 1000, частота снижается до нескольких герц

A>Есть ли более быстрые варианты отображения множества перерисовываемых аватаров?


Воспользоваться стандартными средствами анимации WPF? Зачём заново её изобретать? Больше ничего писать не буду, ибо такой задачи не решал, документация в MSDN, примеры или подсказки можно найти в блогах сообщества WPF Disciples, буде таковое желание.
Everything is an object.
Re[2]: [WPF] Анимация большого кол-ва объектов
От: vit_as Россия  
Дата: 28.06.09 18:09
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Здравствуйте, adanov, Вы писали:


A>>Недоволен низкой производительностью.

A>>Скорее всего делал неправильно:

V>Ага, сегодня услышал такую фразу "Reinvent WPF in the application".


A>>Есть список объектов.

A>>Их аватары отображаются в виде равнобедренных треугольников (Polygon) на канвасе.
A>>Канвас обновляется 30 раз в сек через DispatcherTimer (для 10 объектов).
A>>В TimerCallback пересчитывается положение и направление объектов,
A>>и перезаписываются новые положения точек в Polygon.Points (по три точки на объект).
A>>При кол-ве объектов около 1000, частота снижается до нескольких герц

A>>Есть ли более быстрые варианты отображения множества перерисовываемых аватаров?


V>Воспользоваться стандартными средствами анимации WPF? Зачём заново её изобретать? Больше ничего писать не буду, ибо такой задачи не решал, документация в MSDN, примеры или подсказки можно найти в блогах сообщества WPF Disciples, буде таковое желание.


У меня тоже недавно поднимался вопрос производительности WPF с отрисовкой... Хочу сказать, что значительного ускорения при перерисовке с помощью Animation не наблюдается. А всего-то нужно было анимировать линии объектов.

Вообще даже если нужно, чтобы анимация распространялась только на один объект из множества расположенных на канвасе, то скорость анимации зависит от количества статических объектов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.