1

Господа, помогите разобраться с анимацией в WPF приложение. Даже самая простая анимация с изменением цвета, размера или еще какого то свойства - сильно нагружает процессор (у меня лично на 20% загрузка висит). Помогите разобраться с этим. Уж больно хочется сделать "живое" приложение, но с таким успехом я лучше картинок понапихаю)...

EvgeniyZ
  • 15,694
  • (1) Смена картинок — намного более тяжёлая операция, чем анимация. Так что вы так ничего не выиграете. (2) А покажите вашу анимацию на воспроизводящем примере. И да, что у вас за система? – VladD May 16 '17 at 18:54
  • По данным примерам делаю Картинки я имею ввиду - GIF. Система win 10 – EvgeniyZ May 16 '17 at 19:01
  • 1
    Открой проводник и начни изменять размер окна. Процессор так же улетит под 20 - 25 %. Перерисовка у винды занимает много ресурсов. На 2х ядерном ЦПУ будет под 50%. – Chloroform May 16 '17 at 19:06
  • Ну с этим как то бороться можно? Мне нужна простейшая анимация поворачивать объект пока он виден, но если он так будет грузить, то тогда это большая проблема..) – EvgeniyZ May 16 '17 at 19:14
  • @Chloroform: У меня долгое изменение размеров окна Visual Studio с частотой где-то в 5 герц даёт загрузку процессора на процентов 5 визуально. Что я делаю не так? – VladD May 16 '17 at 19:29
  • @EvgeniyZ: В тех примерах ничего такого криминального не видно. А попробуйте на вашей машине вот такую анимашку: https://ru.stackoverflow.com/a/543348/10105. На моей старой машине она летала (быстрее, чем 25 кадров в секунду, нужные для gif'а), а на новой так и подавно. – VladD May 16 '17 at 19:32
  • @VladD: Хм, что то я данный пример даже запустить не смог. Создал пустой WPF проект, сделал все так, как там и в итоге пустое окно. Я так понимаю там надо еще что то сделать? Сам код – EvgeniyZ May 16 '17 at 20:41
  • @EvgeniyZ: Ну, у вас есть Binding, а где устанавливается DataContext? И где определяется DataTemplate типа данных, который показывается? – VladD May 16 '17 at 21:30
  • @VladD: Весь день пытался привязать к нему нужные элементы и в итоге выводит только 1, не до конца я понимаю как тот способ работает. Можно простой пример данных? – EvgeniyZ May 17 '17 at 20:59
  • @EvgeniyZ: Ну, вы привязываете один элемент, а через 1 секунду другой, например. – VladD May 17 '17 at 21:00
  • @VladD: Ага, разобрался. Раз в секунду по таймером загонял в него другой элемент. Заработал. И по нагрузке хочу сказать, что весьма не плохо, всего 0.5% максимум. Теперь вот разобраться как реализовать у себя подобным образом анимацию скажем выдвигания объекта, или медленный поворот на 360 градусов элемент... – EvgeniyZ May 17 '17 at 21:39
  • @EvgeniyZ: Тогда разбирайтесь, что именно анимируется в том коде, сравнивайте. Задавайте вопросы :) – VladD May 17 '17 at 21:50

0 Answers0