Анимация в C# WPF: Урок 9 — XAML и код

В любой WPF-проект можно добавить анимацию двумя способами: программно, в коде C#, или с помощью XAML. Рассмотрим оба варианта.

Анимация в C#

Создадим простую анимацию для кнопки с именем rectButton.

Подключим необходимую библиотеку:

using System.Windows.Media.Animation;

Создадим объект DoubleAnimation:

DoubleAnimation buttonAnimation = new DoubleAnimation();

Установим параметры: начальное значение (From), конечное (To) и длительность (Duration):

buttonAnimation.From = 0;
buttonAnimation.To = 450; // Ширина кнопки в пикселях
buttonAnimation.Duration = TimeSpan.FromSeconds(3); // Длительность в секундах

Применим анимацию к кнопке методом BeginAnimation:

rectButton.BeginAnimation(Button.WidthProperty, buttonAnimation);

Этот код плавно увеличивает ширину rectButton от 0 до 450 пикселей за 3 секунды.

Анимация в XAML

Создадим аналогичную анимацию в XAML для кнопки «Войти в кабинет» (authButton) в окне AuthWindow.

Добавим анимацию перед элементом Grid:

<Window.Triggers>
  <EventTrigger RoutedEvent="Window.Loaded">
    <EventTrigger.Actions>
      <BeginStoryboard>
        <Storyboard>
          <Storyboard.TargetProperty>
            Width
          </Storyboard.TargetProperty>
          <Storyboard.TargetName>
            authButton
          </Storyboard.TargetName>
          <DoubleAnimation
              From="0"
              To="450"
              AutoReverse="True"
              RepeatBehavior="3x"
              Duration="0:0:3"/>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger.Actions>
  </EventTrigger>
</Window.Triggers>

Эта анимация запускается при загрузке окна. AutoReverse="True" обеспечивает обратное воспроизведение, RepeatBehavior="3x" — повторение трижды, а Duration="0:0:3" задаёт длительность в 3 секунды.

RepeatBehavior может принимать значение Forever для бесконечного повтора. Обратите внимание на разницу между указанием числа повторов (например, «3x») и общей длительности в RepeatBehavior. Первое задаёт количество циклов, второе — общее время воспроизведения.

Оба метода позволяют создавать анимации в WPF. Выбор между C# и XAML зависит от сложности анимации и предпочтений разработчика. Простые анимации проще реализовать в C#, а сложные, связанные с дизайном, — в XAML.

Что будем искать? Например,программа