Как выключить анимацию в windows 7. Основные принципы анимации в WinRT

Основные принципы анимации

На первый взгляд кажется, что анимации больше нужны программистам, работающим над играми иди моделированием физических процессов. Разве они нужна в спокойных, почтенных бизнес-приложениях?

Однако анимация играет в приложениях Windows 8 более важную роль, чем может показаться. Позже эта тема будет раскрыта, когда мы рассмотрим использование XAML для создания объектов ControlTemplate (шаблонов), полностью переопределяющих внешний вид элементов управления. И хотя самым важным аспектом ControlTemplate является визуальное дерево, шаблон также должен описывать изменение внешнего вида элемента управления в некоторых условиях. Например, элемент управления Button может выделяться при нажатии или окрашиваться в серый цвет при блокировке. Все эти изменения в оформлении ControlTemplate определяются как анимации - даже если изменение происходит мгновенно и мало похоже на анимацию.

Анимации также используются для определения переходов между разными представлениями приложения или перемещениями элементов в ходе внесения изменений в коллекции. Попробуйте переместить плитку на начальном экране из одного места в другое - вы увидите, как соседние плитки перемещаются в ответ. Все это делается с помощью анимаций, которые играют важную роль в динамичной эстетике Windows 8. Во многих современных приложениях, таких, например, как программа для изучения языков программирования pascal abc , анимации используются для расширения возможностей пользовательского интерфейса.

Пространство имен Windows.UI.Xaml.Media.Animation

В статье «Таймеры и анимации в WinRT» было показано, как организовать анимацию объектов с использованием события CompositionTarget.Rendering - прием, который я назвал «ручной» анимацией. Хотя ручная анимация может быть достаточно мощной, у нее есть свои недостатки. Метод обратного вызова всегда выполняется в потоке пользовательского интерфейса, а это означает, что анимация может замедлить реакцию программы на ввод пользователя.

Кроме того, анимации, продемонстрированные с CompositionTarget.Rendering, были полностью линейными, то есть линейно увеличивали или уменьшали некоторое значение с течением времени. Часто небольшое изменение темпа анимации делает ее более приятной для глаза; обычно анимация ускоряется в начале и замедляется в конце, иногда с небольшим «обратным ходом» для пущего реализма. Разумеется, такие анимации тоже можно выполнить с использованием CompositionTarget.Rendering, но организовать необходимые вычисления может быть непросто.

В последующих примерах будут использоваться встроенные средства анимации Windows Runtime, состоящие из 71 класса, 4 перечислений и 2 структур, объединенных в пространство имен Windows.UI.Xaml.Media.Animation . Эти анимации часто выполняются в фоновых потоках и поддерживают ряд возможностей для реализации нетривиальных эффектов. Очень часто анимации полностью определяются в XAML, а затем инициируются из кода или (в одном особом, но распространенном случае) из XAML.

Конечно, сама идея освоения средств анимации из 71 класса выглядит устрашающе. К счастью, эти классы разделены на несколько общих категорий, и к концу прочтения материала вы будете полностью понимать структуру пространства имен.

Анимация основана на изменениях некоторого свойства объекта. Это свойство часто называется «целевым свойством» анимации . Анимации Windows Runtime требуют, чтобы целевое свойство поддерживалось свойством зависимости, а следовательно, определялось в классе, производном от DependencyObject.

В некоторых графических средах поддерживаются кадровые анимации, у которых темп анимации определяется частотой смены кадров экрана. Различия в частоте смены кадров на разных аппаратных платформах могут привести к искажению темпа анимации. Анимации Windows Runtime относятся к категории синхронных, то есть выполняются по истечении фактических интервалов времени: секунд и миллисекунд.

Что произойдет, если поток, в котором выполняется анимация, должен выполнить некоторую работу и анимация пропустит несколько тактов? Кадровая анимация обычно продолжается с того места, в котором она была приостановлена. Синхронная анимация Windows Runtime подстраивается под текущее время и продолжается с того состояния, в котором она должна находиться.

Простой пример использования анимаций

Начнем с анимации свойства FontSize элемента TextBlock. Следующий проект содержит панель Grid из двух строк с полем TextBlock и кнопкой Button для запуска анимации. Очень часто анимации определяются в секции Resources корневого элемента файла XAML. Простая анимация состоит из объектов Storyboard и DoubleAnimation :