Compartir a través de


DoubleAnimation Clase

Definición

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

public ref class DoubleAnimation 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 DoubleAnimation 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 DoubleAnimation : Timeline
Public NotInheritable Class DoubleAnimation
Inherits Timeline
<DoubleAnimation />
Herencia
Object Platform::Object IInspectable DependencyObject Timeline DoubleAnimation
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo usar DoubleAnimation para crear un rectángulo que se atenúa dentro y fuera de la vista después de cargarlo.

<StackPanel>
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">
            <DoubleAnimation
          Storyboard.TargetName="MyAnimatedRectangle"
          Storyboard.TargetProperty="Opacity"
          From="1.0" To="0.0" Duration="0:0:3"
          AutoReverse="True" RepeatBehavior="Forever" />
        </Storyboard>
    </StackPanel.Resources>

    <Rectangle Loaded="Start_Animation" x:Name="MyAnimatedRectangle"
     Width="100" Height="100" Fill="Blue" />

</StackPanel>
// Start the animation when the object loads
private void Start_Animation(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
<Canvas>
    <Canvas.Resources>
        <Storyboard x:Name="myStoryboard">

            <!-- Animate the TranslateTransform's X property
           from 0 to 350, then 50, then 200 over 10 seconds. -->
            <DoubleAnimationUsingKeyFrames
       Storyboard.TargetName="MyAnimatedTranslateTransform"
       Storyboard.TargetProperty="X"
       Duration="0:0:10" EnableDependentAnimation="True">

                <!-- Using a LinearDoubleKeyFrame, the rectangle moves 
           steadily from its starting position to 500 over 
           the first 3 seconds.  -->
                <LinearDoubleKeyFrame Value="500" KeyTime="0:0:3" />

                <!-- Using a DiscreteDoubleKeyFrame, the rectangle suddenly 
           appears at 400 after the fourth second of the animation. -->
                <DiscreteDoubleKeyFrame Value="400" KeyTime="0:0:4" />

                <!-- Using a SplineDoubleKeyFrame, the rectangle moves 
           back to its starting point. The animation starts out slowly at 
           first and then speeds up. This KeyFrame ends after the 6th
           second. -->
                <SplineDoubleKeyFrame KeySpline="0.6,0.0 0.9,0.00" Value="0" KeyTime="0:0:6" />

            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Canvas.Resources>

    <Rectangle PointerPressed="Pointer_Clicked" Fill="Blue"
 Width="50" Height="50">
        <Rectangle.RenderTransform>
            <TranslateTransform x:Name="MyAnimatedTranslateTransform" />
        </Rectangle.RenderTransform>
    </Rectangle>

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

Comentarios

Use DoubleAnimation para animar el valor de propiedad de cualquier propiedad de dependencia que sea de tipo Double.

A veces, tendrás que usar la propiedad indirecta dirigida a para establecer como destino una subpropulación de otro objeto que sea el valor de una propiedad en el destino. Por ejemplo, para animar el componente X de un RenderTransform de un UIElement, debe hacer referencia a algunos de los valores intermedios de propiedad de objeto, hasta que el último paso de la ruta de acceso de propiedad indirecta sea realmente un valor Double , como sucede con TranslateTransform.X. La cadena correcta que se va a usar para Storyboard.TargetProperty en este ejemplo es "(UIElement.RenderTransform). (TranslateTransform.X)". Para obtener más información sobre el destino indirecto de propiedades y otros conceptos de animación con guion gráfico, consulta Animaciones con guion gráfico.

Una DoubleAnimation 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 está animando.
  • 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 del valor especificado por la propiedad From al valor especificado por la suma de las propiedades From y By .
  • Para solo: La animación avanza 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 avanza desde el valor base de la propiedad que se está animando o el valor de salida de una animación anterior hasta la suma de ese valor y el valor especificado por la propiedad By .

No se pueden animar los valores X e Y de un Point mediante una DoubleAnimation, ya que estas propiedades no son propiedades de dependencia (Point es una estructura y no pueden tener propiedades de dependencia). En su lugar, use PointAnimation para animar las propiedades de dependencia que tienen un valor Point .

Tampoco puede usar DoubleAnimation para animar valores int o valores de bytes . En su lugar, tendrás que usar ObjectAnimationUsingKeyFrames, que no te dará un comportamiento de interpolación, por lo que es posible que tengas que definir varios fotogramas clave para obtener una animación razonablemente suave. No hay muchas propiedades de dependencia relacionadas con la interfaz de usuario que usan valores int o valores de bytes , por lo que esto no debe ser un escenario común que no sea para las propiedades personalizadas.

Las propiedades From, By o To de una DoubleAnimation no son estrictamente dobles. En su lugar, son nullables para Double. El valor predeterminado para estos valores es NULL, no 0. 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

DoubleAnimation()

Inicializa una nueva instancia de la clase DoubleAnimation .

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. En su lugar, use DispatcherQueue .

(Heredado de DependencyObject)
DispatcherQueue

Obtiene el objeto DispatcherQueue al que está asociado este objeto. DispatcherQueue representa una instalación que puede tener acceso a 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 se deben permitir las propiedades animadas que se consideran animaciones dependientes para 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 el que avanza el tiempo 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 mediante una llamada 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