Читаем Язык программирования C#9 и платформа .NET5 полностью

Следует уяснить, что классы Animation могут подключаться к любому свойству зависимости заданного объекта, которое имеет соответствующий тип. Как объяснялось в главе 25, свойства зависимости являются специальной формой свойств, которую требуют многие службы WPF, включая анимацию, привязку данных и стили.

По соглашению свойство зависимости определяется как статическое, доступное только для чтения поле класса, имя которого образуется добавлением слова Property к нормальному имени свойства. Например, для обращения к свойству зависимости для свойства Height класса Button в коде будет использоваться Button.HeightProperty.

<p id="AutBody_Root1223"><strong>Свойства То, From и By</strong></p>

Во всех классах Animation определены следующие ключевые свойства, которые управляют начальным и конечным значениями, применяемыми для выполнения анимации:

То — представляет конечное значение анимации;

From — представляет начальное значение анимации;

By — представляет общую величину, на которую анимация изменяет начальное значение.

Несмотря на тот факт, что все классы поддерживают свойства То, From и By, они не получают их через виртуальные члены базового класса. Причина в том, что лежащие в основе типы, упакованные внутри указанных свойств, варьируются в широких пределах (целые числа, цвета, объекты Thickness и т.д.), и представление всех возможностей через единственный базовый класс привело бы к очень сложным кодовым конструкциям.

В связи со сказанным может возникнуть вопрос: почему не использовались обобщения .NET для определения единственного обобщенного класса анимации с одиночным параметром типа (скажем, Animate)? Опять-таки, поскольку существует огромное количество типов данных (цвета, векторы, целые числа, строки и т.д.), применяемых для анимации свойств зависимости, решение оказалось бы не настолько ясным, как можно было бы ожидать (не говоря уже о том, что XAML обеспечивает лишь ограниченную поддержку обобщенных типов).

<p id="AutBody_Root1224"><strong>Роль базового класса Timeline</strong></p>

Хотя для определения виртуальных свойств То, From и By не использовался единственный базовый класс, классы Animation все же разделяют общий базовый класс — System.Windows.Media.Animation.Timeline. Данный тип предлагает набор дополнительных свойств, которые управляют темпом продвижения анимации (табл. 27.1).

<p id="AutBody_Root1225"><strong>Реализация анимации в коде C#</strong></p>

Вы построите окно, содержащее элемент Button, который обладает довольно странным поведением: когда на него наводится курсор мыши, он вращается вокруг своего левого верхнего угла. Начните с создания в Visual Studio нового проекта приложения WPF по имени SpinningButtonAnimationApp. Модифицируйте начальную разметку, как показано ниже (обратите внимание на обработку события MouseEnter кнопки):

      MouseEnter="btnSpinner_MouseEnter" Click="btnSpinner_OnClick"/>

В файле отделенного кода импортируйте пространство имен System.Windows.Media.Animation и добавьте в файл C# следующий код:

private bool _isSpinning=false;

private void btnSpinner_MouseEnter(

  object sender, MouseEventArgs e)

{

  if (!_isSpinning)

  {

    _isSpinning=true;

    // Создать объект DoubleAnimation и зарегистрировать

    // его с событием Completed.

    var dblAnim=new DoubleAnimation();

    dblAnim.Completed +=(o, s)=> { _isSpinning=false; };

    // Установить начальное и конечное значения.

    dblAnim.From=0;

    dblAnim.To=360;

    // Создать объект RotateTransform и присвоить

    // его свойству RenderTransform кнопки.

    var rt=new RotateTransform();

    btnSpinner.RenderTransform=rt;

    // Выполнить анимацию объекта RotateTransform.

    rt.BeginAnimation(RotateTransform.AngleProperty, dblAnim);

  }

}

private void btnSpinner_OnClick(

  object sender, RoutedEventArgs e)

{

}

Первая крупная задача метода btnSpinner_MouseEnter() связана с конфигурированием объекта DoubleAnimation, который будет начинать со значения 0 и заканчивать значением 360. Обратите внимание, что для этого объекта также обрабатывается событие Completed, где переключается булевская переменная уровня класса, которая применяется для того, чтобы выполняющаяся анимация не была сброшена в начало.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры