Compartir a través de


ColorAnimation Clase

Definición

Anima el valor de una propiedad Color entre dos valores de destino mediante interpolación lineal sobre una duración especificada.

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 .../>
Herencia
Object Platform::Object IInspectable DependencyObject Timeline ColorAnimation
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo usar ColorAnimation para animar el color de fondo de un 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)"

Como alternativa, podría crear explícitamente solidColorBrush, asignarle el nombre y dirigirse directamente a su propiedad Color . En el ejemplo siguiente se muestra cómo crear la misma animación que la anterior, excepto que usa la segmentación de propiedades directas.

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

Comentarios

Use ColorAnimation para animar el valor de propiedad de cualquier propiedad de dependencia que sea de tipo Color.

La interpolación lineal de un color significa que cada uno de los valores ARGB se trata como un byte y la interpolación es simplemente una operación matemática. Obtiene los mejores resultados de la interpolación de colores si al menos uno de los componentes RGB es el mismo o cerca del mismo en el valor inicial y el valor final.

Normalmente, debe usar la propiedad indirecta destinada a para establecer como destino una subproperción de otro objeto que sea el valor de una propiedad en el destino. Esto se debe a que muy pocas propiedades que muestran información de color en los elementos de la interfaz de usuario son realmente de tipo Color. La mayoría son en lugar del tipo Brush. Para usar ColorAnimation en los elementos de la interfaz de usuario, normalmente se dirige a la propiedad Color de un SolidColorBrush que es el valor de la subproperción. La sintaxis para esto se muestra en el ejemplo XAML de la sección "Ejemplos". Para obtener más información sobre los destinos de propiedades indirectas y otros conceptos de animación con guion gráfico, consulta Animaciones con guion gráfico o sintaxis de ruta de acceso de propiedad.

Un ColorAnimation normalmente tiene al menos una de las propiedades From, By o To establecidas, pero nunca las tres.

  • Solo desde: La animación progresa del valor especificado por la propiedad From al valor base de la propiedad que se va a animar.
  • De y a: La animación progresa del valor especificado por la propiedad From al valor especificado por la propiedad To .
  • De y por: La animación avanza desde el valor especificado por la propiedad From al valor especificado por la suma de las propiedades From y By .
  • Para solo: La animación progresa desde el valor base de la propiedad animada o el valor de salida de una animación anterior al valor especificado por la propiedad To .
  • Solo por: La animación progresa desde el valor base de la propiedad que se anima o el valor de salida de una animación anterior hasta la suma de ese valor y el valor especificado por la propiedad By .

Las propiedades From, By y To de un ColorAnimation no son estrictamente un Color. En su lugar, son que admiten valores NULL para Color. El valor predeterminado para estos valores es NULL, no una estructura sin inicializar. Ese valor NULL es la forma en que el sistema de animación distingue que no se ha establecido específicamente un valor. Las extensiones del componente Visual C++ (C++/CX) no tienen un tipo NULL, por lo que usan IReference en su lugar.

Constructores

ColorAnimation()

Inicializa una nueva instancia de la clase ColorAnimation .

Propiedades

AutoReverse

Obtiene o establece un valor que indica si la escala de tiempo se reproduce en orden inverso después de completar una iteración de avance.

(Heredado de Timeline)
BeginTime

Obtiene o establece la hora en la que debe comenzar esta escala de tiempo .

(Heredado de Timeline)
By

Obtiene o establece la cantidad total por la que la animación cambia su valor inicial.

ByProperty

Identifica la propiedad de dependencia By .

Dispatcher

Siempre devuelve null en una aplicación de SDK de Aplicaciones para Windows. Use DispatcherQueue en su lugar.

(Heredado de DependencyObject)
DispatcherQueue

Obtiene el objeto DispatcherQueue al que está asociado este objeto. DispatcherQueue representa una instalación que puede acceder al DependencyObject en el subproceso de interfaz de usuario incluso si un subproceso que no es de interfaz de usuario inicia el código.

(Heredado de DependencyObject)
Duration

Obtiene o establece la duración para la que se reproduce esta escala de tiempo, sin contar las repeticiones.

(Heredado de Timeline)
EasingFunction

Obtiene o establece la función de aceleración aplicada a esta animación.

EasingFunctionProperty

Identifica la propiedad de dependencia EasingFunction .

EnableDependentAnimation

Obtiene o establece un valor que declara si las propiedades animadas que se consideran animaciones dependientes deben poder usar esta declaración de animación.

EnableDependentAnimationProperty

Identifica la propiedad de dependencia EnableDependentAnimation .

FillBehavior

Obtiene o establece un valor que especifica cómo se comporta la animación después de que llegue al final de su período activo.

(Heredado de Timeline)
From

Obtiene o establece el valor inicial de la animación.

FromProperty

Identifica la propiedad de dependencia From .

RepeatBehavior

Obtiene o establece el comportamiento de repetición de esta escala de tiempo.

(Heredado de Timeline)
SpeedRatio

Obtiene o establece la velocidad, en relación con su elemento primario, en cuyo momento progresa para esta escala de tiempo.

(Heredado de Timeline)
To

Obtiene o establece el valor final de la animación.

ToProperty

Identifica la propiedad de dependencia To .

Métodos

ClearValue(DependencyProperty)

Borra el valor local de una propiedad de dependencia.

(Heredado de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Devuelve cualquier valor base establecido para una propiedad de dependencia, que se aplicaría en los casos en los que una animación no está activa.

(Heredado de DependencyObject)
GetValue(DependencyProperty)

Devuelve el valor efectivo actual de una propiedad de dependencia de dependencyObject.

(Heredado de DependencyObject)
ReadLocalValue(DependencyProperty)

Devuelve el valor local de una propiedad de dependencia, si se establece un valor local.

(Heredado de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una función de notificación para escuchar los cambios en una dependencyProperty específica en esta instancia de DependencyObject .

(Heredado de DependencyObject)
SetValue(DependencyProperty, Object)

Establece el valor local de una propiedad de dependencia en dependencyObject.

(Heredado de DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Cancela una notificación de cambio registrada anteriormente llamando a RegisterPropertyChangedCallback.

(Heredado de DependencyObject)

Eventos

Completed

Se produce cuando se ha completado la reproducción del objeto Storyboard .

(Heredado de Timeline)

Se aplica a

Consulte también