Partilhar via


DoubleAnimation Classe

Definição

Anima o valor de uma propriedade Double entre dois valores de destino usando interpolação linear em uma Duração 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 />
Herança
Object Platform::Object IInspectable DependencyObject Timeline DoubleAnimation
Atributos

Exemplos

O exemplo a seguir mostra como usar DoubleAnimation para criar um retângulo que desaparece dentro e fora de exibição depois que ele é carregado.

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

Comentários

Use DoubleAnimation para animar o valor da propriedade de qualquer propriedade de dependência do tipo Double.

Às vezes, você precisará usar o direcionamento de propriedade indireto para direcionar uma subpropósima de outro objeto que seja o valor de uma propriedade no destino. Por exemplo, para animar o componente X de um RenderTransform de um UIElement, você precisa referenciar alguns dos valores intermediários de propriedade de objeto, até que a última etapa no caminho da propriedade indireta seja realmente um valor Double , como é o caso de TranslateTransform.X. A cadeia de caracteres correta a ser usada para Storyboard.TargetProperty neste exemplo é "(UIElement.RenderTransform). (TranslateTransform.X)". Para obter mais informações sobre direcionamento de propriedade indireto e outros conceitos de animação com storyboard, consulte Animações storyboarded.

Uma DoubleAnimation 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 .
  • Por apenas: 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 .

Você não pode animar os valores X e Y de um Point usando uma DoubleAnimation, pois essas propriedades não são propriedades de dependência (Point é uma estrutura e não pode ter propriedades de dependência.) Em vez disso, use PointAnimation para animar propriedades de dependência que têm um valor Point .

Você também não pode usar DoubleAnimation para animar valores int ou valores de bytes . Em vez disso, você precisará usar ObjectAnimationUsingKeyFrames, o que não lhe dará um comportamento de interpolação, portanto, talvez seja necessário definir vários quadros-chave para obter uma animação razoavelmente suave. Não há muitas propriedades de dependência relacionadas à interface do usuário que usam valores int ou valores de bytes , portanto, esse não deve ser um cenário comum além das propriedades personalizadas.

As propriedades From, By ou To de uma DoubleAnimation não são estritamente um Double. Em vez disso, elas são anuláveis para Double. O valor padrão para eles é nulo, não 0. 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

DoubleAnimation()

Inicializa uma nova instância da classe DoubleAnimation .

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 esta 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 Por dependência.

Dispatcher

Sempre retorna null em um aplicativo SDK do Aplicativo Windows. Em vez disso, use DispatcherQueue .

(Herdado de DependencyObject)
DispatcherQueue

Obtém o ao DispatcherQueue qual esse objeto está associado. O DispatcherQueue 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 nesta 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 é concluído.

(Herdado de Timeline)

Aplica-se a

Confira também