Ошибка управления Silverlight MultiScaleImage и загрузка процессора - PullRequest
0 голосов
/ 19 сентября 2009

Как использовать анимацию и элемент управления MultiScaleImage на одном и том же UserControl?
Я обнаружил, что если вы поместите MultiScaleImage и анимацию на один и тот же UserControl, вы всегда получаете высокую загрузку ЦП. Это ошибка управления MultiScaleImage? Вот пример проекта . ( просто сетка, MultiScaleImageControl и замирающий прямоугольник )

Почему загрузка ЦП высока? Когда воспроизводится анимация, UserControl запускает событие LayoutUpdated, а MultiScaleImage перехватывает это событие и перерисовывает себя. Поэтому, если MaxFrameRate = 60 (значение по умолчанию), то MultiScaleImage каждую секунду перерисовывает себя ~ 60 раз (MultiScaleImage.LayoutUpdated срабатывает ~ 60 раз), вызывая высокую загрузку ЦП:

  • ~ 20% ЦП, если MaxFrameRate = 10
  • ~ 40% ЦП, если MaxFrameRate = 30
  • ~ 85% ЦП, если MaxFrameRate = 60 (по умолчанию)

Разве MultiScaleImage не должен перерисовывать себя (или пересчитывать что-то интенсивное использование процессора) только для события SizeChanged? Иначе зачем использовать этот элемент управления, если я не могу использовать анимацию?

1 Ответ

1 голос
/ 02 ноября 2009

Похоже, теперь это известная ошибка :)

...