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 indireto de propriedade para direcionar uma sub-propriedade 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 Duplo , 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 indireta e outros conceitos de animação storyboarded, 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 De e Por .
  • 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 Ponto usando um 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 de bytes ou valores de int. 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 de bytes ou valores de bytesint, portanto, esse não deve ser um cenário comum que não seja para propriedades personalizadas.

As propriedades From, By ou To de um DoubleAnimation não são estritamente um Double. Em vez disso, estas são uma anulável 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. O C++ não tem um tipo anulável , portanto, ele usa IReference .

Construtores

Nome Description
DoubleAnimation()

Inicializa uma nova instância da classe DoubleAnimation .

Propriedades

Nome Description
AutoReverse

Obtém ou define um valor que indica se a linha do tempo é reproduzida ao contrário depois de concluir uma iteração para frente.

(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 o valor total pelo qual a animação altera seu valor inicial.

ByProperty

Identifica a propriedade Por dependência.

Dispatcher

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

(Herdado de DependencyObject)
DispatcherQueue

Obtém o DispatcherQueue que este objeto está associado. Representa DispatcherQueue uma instalação que pode acessar o DependencyObject thread da interface do usuário mesmo se o código for iniciado por um thread que não seja da interface do usuário.

(Herdado de DependencyObject)
Duration

Obtém ou define o período de tempo 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 esta 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 recorrente dessa linha do tempo.

(Herdado de Timeline)
SpeedRatio

Obtém ou define a taxa, relativa ao seu 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

Nome Description
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 em 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 um DependencyProperty específico 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

Nome Description
Completed

Ocorre quando o objeto Storyboard foi concluído.

(Herdado de Timeline)

Aplica-se a

Confira também