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

Затем создается объект RotateTransform, который подключается к свойству RenderTransform элемента управления Button (btnSpinner). Наконец, объект RenderTransform информируется о начале анимации его свойства Angle с использованием объекта DoubleAnimation. Реализация анимации в коде обычно осуществляется путем вызова метода BeginAnimation() и передачи ему лежащего в основе свойства зависимости, к которому необходимо применить анимацию (вспомните, что по соглашению оно определено как статическое поле класса), и связанного объекта анимации.

Добавьте в программу еще одну анимацию, которая заставит кнопку после щелчка плавно становиться невидимой. Для начала создайте обработчик события Click кнопки btnSpinner с приведенным ниже кодом:

private void btnSpinner_OnClick(

  object sender, RoutedEventArgs e)

{

  var dblAnim=new DoubleAnimation

  {

    From=1.0,

    To=0.0

  };

  btnSpinner.BeginAnimation(Button.OpacityProperty, dblAnim);

}

В коде обработчика события btnSpinner_Click() изменяется свойство Opacity, чтобы постепенно скрыть кнопку из виду. Однако в настоящий момент это затруднительно, потому что кнопка вращается слишком быстро. Как можно управлять ходом анимации? Ответ на вопрос ищите ниже.

<p id="AutBody_Root1226"><strong>Управление темпом анимации</strong></p>

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

Определить другой период времени для перехода анимации можно посредством свойства Duration объекта анимации, которому присваивается объект Duration. Обычно промежуток времени устанавливается путем передачи объекта TimeSpan конструктору класса Duration. Взгляните на показанное далее изменение, в результате которого кнопке будет выделено четыре секунды на вращение:

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.Duration=new Duration(TimeSpan.FromSeconds(4));

    ...

  }

}

Благодаря такой модификации у вас должен появиться шанс щелкнуть на кнопке во время ее вращения, после чего она плавно исчезнет.

На заметку! Свойство BeginTime класса Animation также принимает объект TimeSpan. Вспомните, что данное свойство можно устанавливать для указания времени ожидания перед запуском анимационной последовательности.

<p id="AutBody_Root1227"><strong>Запуск в обратном порядке и циклическое выполнение анимации</strong></p>

За счет установки в true свойства AutoReverse объектам Animation указывается о необходимости запуска анимации в обратном порядке по ее завершении. Например, если необходимо, чтобы кнопка снова стала видимой после исчезновения, можно написать следующий код:

private void btnSpinner_OnClick(object sender, RoutedEventArgs e)

{

  DoubleAnimation dblAnim=new DoubleAnimation

  {

    From=1.0,

    To=0.0

  };

  // После завершения запустить в обратном порядке.

  dblAnim.AutoReverse=true;

  btnSpinner.BeginAnimation(Button.OpacityProperty, dblAnim);

}

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

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

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

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

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

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

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

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

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