DoubleAnimation Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 |
DispatcherQueue |
Obtiene el objeto |
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) |