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

  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);

}

Если нужно, чтобы анимация повторялась несколько раз (или никогда не прекращалась), тогда можно воспользоваться свойством RepeatBehavior, общим для всех классов Animation. Передавая конструктору простое числовое значение, можно указать жестко закодированное количество повторений. С другой стороны, если передать конструктору объект TimeSpan, то можно задать время, в течение которого анимация должна повторяться. Наконец, чтобы выполнять анимацию бесконечно, свойство RepeatBehavior можно установить в RepeatBehavior.Forever. Взгляните на следующие способы изменения поведения повтора одного из двух объектов DoubleAnimation, применяемых в примере:

// Повторять бесконечно.

dblAnim.RepeatBehavior=RepeatBehavior.Forever;

// Повторять три раза.

dblAnim.RepeatBehavior=new RepeatBehavior(3);

// Повторять в течение 30 секунд.

dblAnim.RepeatBehavior=new RepeatBehavior(TimeSpan.FromSeconds(30));

Итак, исследование приемов добавления анимации к аспектам какого-то объекта с использованием кода C# и API-интерфейса анимации WPF завершено. Теперь посмотрим, как делать то же самое с помощью разметки XAML.

<p id="AutBody_Root1228"><strong>Реализация анимации в разметке XAML</strong></p>
Перейти на страницу:

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

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

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

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT