Compartilhar via


ColorAnimation Classe

Definição

Anima o valor de uma propriedade Color entre dois valores de destino usando interpolação linear em uma Duração especificada.

public ref class ColorAnimation sealed : Timeline
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class ColorAnimation final : Timeline
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ColorAnimation : Timeline
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class ColorAnimation : Timeline
Public NotInheritable Class ColorAnimation
Inherits Timeline
<ColorAnimation .../>
Herança
Object Platform::Object IInspectable DependencyObject Timeline ColorAnimation
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

O exemplo a seguir mostra como usar ColorAnimation para animar a cor da tela de fundo de um 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();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    colorStoryboard.Begin()
End Sub
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"

Como alternativa, você pode criar explicitamente o SolidColorBrush, nomeá-lo e direcionar sua propriedade Color diretamente. O exemplo a seguir mostra como criar a mesma animação que a anterior, exceto que ela usa direcionamento de propriedade direta.

<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();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    colorStoryboard.Begin()
End Sub

Comentários

Use ColorAnimation para animar o valor da propriedade de qualquer propriedade de dependência do tipo Color.

A interpolação linear de uma Cor significa que cada um dos valores ARGB é tratado como um byte e a interpolação é simplesmente uma operação matemática. Você obterá os melhores resultados da interpolação de cores se pelo menos um dos componentes RGB for o mesmo ou próximo do mesmo no valor inicial e no valor final.

Normalmente, você precisa usar o direcionamento de propriedade indireto para direcionar uma subpropósia de outro objeto que é o valor de uma propriedade no destino. Isso ocorre porque pouquíssimas propriedades que exibem informações de cor em elementos de interface do usuário são, na verdade, do tipo Cor. A maioria é do tipo Brush. Para usar ColorAnimation em elementos de interface do usuário, você normalmente está direcionando a propriedade Color de um SolidColorBrush que é o valor da subpropósio. A sintaxe para isso é mostrada no exemplo XAML na seção "Exemplos". Para obter mais informações sobre direcionamento de propriedade indireto e outros conceitos de animação com storyboard, consulte Animações com storyboard ou sintaxe property-path.

Uma ColorAnimation normalmente tem pelo menos uma das propriedades From, By ou To definidas, mas nunca todas as três.

  • Somente de: A animação progride do valor especificado pela propriedade From para o valor base da propriedade que está sendo animada.
  • De e Para: A animação progride do valor especificado pela propriedade From para o valor especificado pela propriedade To .
  • De e Por: A animação progride do valor especificado pela propriedade From para o valor especificado pela soma das propriedades From e By .
  • Somente para: A animação progride do valor base da propriedade animada ou do valor de saída de uma animação anterior para o valor especificado pela propriedade To .
  • Somente por: A animação progride do valor base da propriedade que está sendo animada ou do valor de saída de uma animação anterior para a soma desse valor e o valor especificado pela propriedade By .

As propriedades From, By e To de um ColorAnimation não são estritamente uma Cor. Em vez disso, são anuláveis para Cor. O valor padrão para eles é nulo, não uma estrutura não inicializada. Esse valor nulo é como o sistema de animação distingue que você não definiu especificamente um valor. As extensões de componente do Visual C++ (C++/CX) não têm um tipo Nullable e, em vez dele, usam IReference.

Construtores

ColorAnimation()

Inicializa uma nova instância da classe ColorAnimation .

Propriedades

AutoReverse

Obtém ou define um valor que indica se a linha do tempo é executada em ordem inversa após concluir uma iteração na ordem comum.

(Herdado de Timeline)
BeginTime

Obtém ou define a hora em que essa Linha do Tempo deve começar.

(Herdado de Timeline)
By

Obtém ou define a quantidade total pela qual a animação altera seu valor inicial.

ByProperty

Identifica a propriedade de dependência Por .

Dispatcher

Obtém o CoreDispatcher ao qual esse objeto está associado. O CoreDispatcher representa uma instalação que pode acessar o DependencyObject no thread da interface do usuário, mesmo que o código seja iniciado por um thread que não seja da interface do usuário.

(Herdado de DependencyObject)
Duration

Obtém ou define o período para o qual essa linha do tempo é reproduzida, sem contar repetições.

(Herdado de Timeline)
EasingFunction

Obtém ou define a função de easing aplicada a essa animação.

EasingFunctionProperty

Identifica a propriedade de dependência EasingFunction .

EnableDependentAnimation

Obtém ou define um valor que declara se as propriedades animadas consideradas animações dependentes devem ter permissão para usar essa declaração de animação.

EnableDependentAnimationProperty

Identifica a propriedade de dependência EnableDependentAnimation .

FillBehavior

Obtém ou define um valor que especifica como a animação se comporta depois de atingir o final de seu período ativo.

(Herdado de Timeline)
From

Obtém ou define o valor inicial da animação.

FromProperty

Identifica a propriedade De dependência.

RepeatBehavior

Obtém ou define o comportamento de repetição desta linha do tempo.

(Herdado de Timeline)
SpeedRatio

Obtém ou define a taxa, em relação ao pai, em que o tempo progride para esta Linha do Tempo.

(Herdado de Timeline)
To

Obtém ou define o valor final da animação.

ToProperty

Identifica a propriedade De dependência.

Métodos

ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade de dependência.

(Herdado de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retorna qualquer valor base estabelecido para uma propriedade de dependência, que se aplicaria nos casos em que uma animação não está ativa.

(Herdado de DependencyObject)
GetValue(DependencyProperty)

Retorna o valor efetivo atual de uma propriedade de dependência de um DependencyObject.

(Herdado de DependencyObject)
ReadLocalValue(DependencyProperty)

Retorna o valor local de uma propriedade de dependência, se um valor local for definido.

(Herdado de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra uma função de notificação para escutar alterações em uma DependencyProperty específica nessa instância dependencyObject .

(Herdado de DependencyObject)
SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência em um DependencyObject.

(Herdado de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Cancela uma notificação de alteração que foi registrada anteriormente chamando RegisterPropertyChangedCallback.

(Herdado de DependencyObject)

Eventos

Completed

Ocorre quando o objeto Storyboard concluiu a reprodução.

(Herdado de Timeline)

Aplica-se a

Confira também