ColorAnimation Класс

Определение

Анимирует значение свойства Color между двумя целевыми значениями с помощью линейной интерполяции в течение указанной длительности.

public ref class ColorAnimation sealed : Timeline
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ColorAnimation final : Timeline
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ColorAnimation : Timeline
Public NotInheritable Class ColorAnimation
Inherits Timeline
<ColorAnimation .../>
Наследование
Object Platform::Object IInspectable DependencyObject Timeline ColorAnimation
Атрибуты

Примеры

В следующем примере показано, как использовать ColorAnimation для анимации цвета фона StackPanel.

<StackPanel x:Name="myStackPanel" Background="Red"
  Loaded="Start_Animation">
  <StackPanel.Resources>
    <Storyboard x:Name="colorStoryboard">

      <!-- Animate the background color of the canvas from red to green
        over 4 seconds. -->
      <ColorAnimation Storyboard.TargetName="myStackPanel" 
        Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
        From="Red" To="Blue" Duration="0:0:4"/>

    </Storyboard>
  </StackPanel.Resources>
</StackPanel>
<StackPanel x:Name="myStackPanel" Background="Red"
Loaded="Start_Animation">
    <StackPanel.Resources>
        <Storyboard x:Name="colorStoryboard">

            <ColorAnimationUsingKeyFrames Storyboard.TargetName="myStackPanel" 
      Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
                
                <!-- Go from green to red in the first 2 seconds. LinearColorKeyFrame creates
                a smooth, linear animation between values. -->
                <LinearColorKeyFrame Value="Blue" KeyTime="00:00:02" />

                <!-- In the next half second, go to yellow. DiscreteColorKeyFrame creates a 
                sudden jump between values. -->
                <DiscreteColorKeyFrame Value="Yellow" KeyTime="00:00:2.5" />

                <!-- In the final 2 seconds of the animation, go from yellow back to green. SplineColorKeyFrame 
                creates a variable transition between values depending on the KeySpline property. In this example,
                the animation starts off slow but toward the end of the time segment, it speeds up exponentially.-->
                <SplineColorKeyFrame Value="Green" KeyTime="00:00:4.5" KeySpline="0.6,0.0 0.9,0.00" />

            </ColorAnimationUsingKeyFrames>
        </Storyboard>
    </StackPanel.Resources>
</StackPanel>
<StackPanel Loaded="Start_Animation">
  <StackPanel.Resources>
    <Storyboard x:Name="colorStoryboard">
      <!-- Animate the background color of the canvas from red to green
        over 4 seconds. -->
      <ColorAnimation Storyboard.TargetName="mySolidColorBrush"
        Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4"/>
    </Storyboard>
  </StackPanel.Resources>

  <StackPanel.Background>
    <SolidColorBrush x:Name="mySolidColorBrush" Color="Red" />
  </StackPanel.Background>

</StackPanel>
// Start the animation when the object loads.
private void Start_Animation(object sender, RoutedEventArgs e)
{
    colorStoryboard.Begin();
}
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"

Кроме того, вы можете явно создать SolidColorBrush, назовите его и нацелите его свойство Color напрямую. В приведенном ниже примере показано, как создать ту же анимацию, что и предыдущая, за исключением использования прямого назначения свойств.

<StackPanel Loaded="Start_Animation">
  <StackPanel.Resources>
    <Storyboard x:Name="colorStoryboard">
      <!-- Animate the background color of the canvas from red to green
        over 4 seconds. -->
      <ColorAnimation Storyboard.TargetName="mySolidColorBrush"
        Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4"/>
    </Storyboard>
  </StackPanel.Resources>

  <StackPanel.Background>
    <SolidColorBrush x:Name="mySolidColorBrush" Color="Red" />
  </StackPanel.Background>

</StackPanel>
// Start the animation when the object loads.
private void Start_Animation(object sender, RoutedEventArgs e)
{
    colorStoryboard.Begin();
}

Комментарии

Используйте ColorAnimation, чтобы анимировать значение свойства любого свойства зависимости, которое имеет тип Color.

Линейная интерполяция для цвета означает, что каждая из значений ARGB обрабатывается как байт, и интерполяция является просто математической операцией. Вы получаете лучшие результаты интерполяции цвета, если хотя бы один из компонентов RGB совпадает или близок к одному и тому же в начальном значении и конечном значении.

Обычно необходимо использовать непрямое назначение свойств, чтобы нацеливать под свойство другого объекта, которое является значением свойства в целевом объекте. Это связано с тем, что очень мало свойств, отображающих сведения о цвете в элементах пользовательского интерфейса, фактически имеют тип Color. Большинство из них вместо типа Brush. Чтобы использовать ColorAnimation для элементов пользовательского интерфейса, обычно используется свойство Color объекта SolidColorBrush , которое является значением вложенного свойства. Синтаксис для этого показан в примере XAML в разделе "Примеры". Дополнительные сведения о косвенном целевых свойствах и других концепциях раскадровки анимации см. в разделе "Раскадрованная анимация" или синтаксис пути свойств.

ColorAnimation обычно имеет по крайней мере один из наборов свойств From, By или To , но никогда не все три.

  • Только из: Анимация выполняется из значения, указанного свойством From , к базовому значению анимируемого свойства.
  • От и до: Анимация выполняется из значения, указанного свойством From , к значению, указанному свойством To .
  • От и по: Анимация выполняется из значения, указанного свойством From , к значению, указанному суммой свойств From и By .
  • Только для: Анимация выполняется из базового значения анимированного свойства или выходного значения предыдущей анимации в значение, указанное свойством To .
  • Только: Анимация выполняется из базового значения свойства, анимируемого или предыдущего значения анимации, к сумме этого значения и значению, заданному свойством By .

Свойства From, By и To объекта ColorAnimation не являются строго цветом. Вместо этого они являются пустыми для цвета. Значение по умолчанию для этих значений равно NULL, а не неинициализированной структуре. Это значение NULL — это то, как система анимации различает, что вы не задали конкретное значение. C++ не имеет типа NULL , поэтому вместо этого используется IReference .

Конструкторы

Имя Описание
ColorAnimation()

Инициализирует новый экземпляр класса ColorAnimation .

Свойства

Имя Описание
AutoReverse

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

(Унаследовано от Timeline)
BeginTime

Возвращает или задает время начала этой временной шкалы .

(Унаследовано от Timeline)
By

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

ByProperty

Определяет свойство зависимостей By .

Dispatcher

Всегда возвращается null в приложении пакета SDK для приложений windows. Вместо этого используйте DispatcherQueue .

(Унаследовано от DependencyObject)
DispatcherQueue

Возвращает, DispatcherQueue с которым связан этот объект. Представляет DispatcherQueue собой объект, который может получить доступ к DependencyObject потоку пользовательского интерфейса, даже если код инициируется потоком, отличным от пользовательского интерфейса.

(Унаследовано от DependencyObject)
Duration

Возвращает или задает продолжительность времени, в течение которого эта временная шкала воспроизводится, не подсчитывая повторения.

(Унаследовано от Timeline)
EasingFunction

Возвращает или задает функцию упрощения, примененную к этой анимации.

EasingFunctionProperty

Определяет свойство зависимостей EasingFunction .

EnableDependentAnimation

Возвращает или задает значение, указывающее, должны ли анимированные свойства, которые считаются зависимыми анимациями, использовать это объявление анимации.

EnableDependentAnimationProperty

Определяет свойство зависимости EnableDependentAnimation .

FillBehavior

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

(Унаследовано от Timeline)
From

Возвращает или задает начальное значение анимации.

FromProperty

Определяет свойство зависимостей From .

RepeatBehavior

Возвращает или задает повторяющееся поведение этой временной шкалы.

(Унаследовано от Timeline)
SpeedRatio

Получает или задает частоту относительно родительского элемента, в течение которого выполняется для этой временной шкалы.

(Унаследовано от Timeline)
To

Возвращает или задает конечное значение анимации.

ToProperty

Определяет свойство зависимостей To .

Методы

Имя Описание
ClearValue(DependencyProperty)

Очищает локальное значение свойства зависимостей.

(Унаследовано от DependencyObject)
GetAnimationBaseValue(DependencyProperty)

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

(Унаследовано от DependencyObject)
GetValue(DependencyProperty)

Возвращает текущее эффективное значение свойства зависимостей из DependencyObject.

(Унаследовано от DependencyObject)
ReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если задано локальное значение.

(Унаследовано от DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Регистрирует функцию уведомлений для прослушивания изменений в определенном экземпляре DependencyProperty в этом экземпляре DependencyObject .

(Унаследовано от DependencyObject)
SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей в DependencyObject.

(Унаследовано от DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Отменяет уведомление об изменении, которое ранее было зарегистрировано путем вызова RegisterPropertyChangedCallback.

(Унаследовано от DependencyObject)

События

Имя Описание
Completed

Происходит при завершении воспроизведения объекта Storyboard .

(Унаследовано от Timeline)

Применяется к

См. также раздел