Недоволен низкой производительностью.
Скорее всего делал неправильно:
Есть список объектов.
Их аватары отображаются в виде равнобедренных треугольников (Polygon) на канвасе.
Канвас обновляется 30 раз в сек через DispatcherTimer (для 10 объектов).
В TimerCallback пересчитывается положение и направление объектов,
и перезаписываются новые положения точек в Polygon.Points (по три точки на объект).
При кол-ве объектов около 1000, частота снижается до нескольких герц
Пробовал отключать канвас от контрола
this.Content = null;
// перезапись точек
this.Content = canvas;
Существенного ускорения не наблюдалось.
Есть ли более быстрые варианты отображения множества перерисовываемых аватаров?
Здравствуйте, 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.
Здравствуйте, 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 не наблюдается. А всего-то нужно было анимировать линии объектов.
Вообще даже если нужно, чтобы анимация распространялась только на один объект из множества расположенных на канвасе, то скорость анимации зависит от количества статических объектов