Condividi tramite


DoubleAnimation Classe

Definizione

Anima il valore di una proprietà Double tra due valori di destinazione usando l'interpolazione lineare su una durata specificata.

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 />
Ereditarietà
Object Platform::Object IInspectable DependencyObject Timeline DoubleAnimation
Attributi

Esempio

Nell'esempio seguente viene illustrato come usare DoubleAnimation per creare un rettangolo che si dissolve all'interno e all'esterno della visualizzazione dopo il caricamento.

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

Commenti

Usare DoubleAnimation per animare il valore della proprietà di qualsiasi proprietà di dipendenza di tipo Double.

In alcuni casi è necessario usare la destinazione della proprietà indiretta per definire come destinazione una sottoproprietà di un altro oggetto che rappresenta il valore di una proprietà nella destinazione. Ad esempio, per animare il componente X di un Oggetto RenderTransform di un OGGETTO UIElement, è necessario fare riferimento ad alcuni dei valori intermedi della proprietà oggetto, fino a quando l'ultimo passaggio nel percorso della proprietà indiretta è realmente un valore Double , come nel caso di TranslateTransform.X. La stringa corretta da usare per Storyboard.TargetProperty in questo esempio è "(UIElement.RenderTransform). (TranslateTransform.X)". Per altre info sulla destinazione delle proprietà indirette e su altri concetti relativi all'animazione con storyboard, vedi Animazioni con storyboard.

Una DoubleAnimation ha in genere almeno una delle proprietà From, By o To impostate, ma non tutte e tre.

  • Solo da: L'animazione passa dal valore specificato dalla proprietà From al valore di base della proprietà animata.
  • Da e a: L'animazione passa dal valore specificato dalla proprietà From al valore specificato dalla proprietà To .
  • Da e per: L'animazione passa dal valore specificato dalla proprietà From al valore specificato dalla somma delle proprietà From e By .
  • Solo per: L'animazione procede dal valore di base della proprietà animata o dal valore di output di un'animazione precedente al valore specificato dalla proprietà To .
  • Solo per: L'animazione passa dal valore di base della proprietà animata o dal valore di output di un'animazione precedente alla somma di tale valore e al valore specificato dalla proprietà By .

Non è possibile animare i valori X e Y di un oggetto Point usando un oggetto DoubleAnimation, perché queste proprietà non sono proprietà di dipendenza (Point è una struttura e non possono avere proprietà di dipendenza). Usare invece PointAnimation per animare le proprietà di dipendenza con un valore Point .

Non è anche possibile usare DoubleAnimation per animare i valori int o i valori di byte . Dovrai invece usare ObjectAnimationUsingKeyFrames, che non ti darà un comportamento di interpolazione, quindi potresti dover definire più fotogrammi chiave per ottenere un'animazione ragionevolmente fluida. Non esistono molte proprietà di dipendenza correlate all'interfaccia utente che usano valori int o valori di byte , quindi questo non deve essere uno scenario comune diverso da per le proprietà personalizzate.

Le proprietà From, By o To di un oggetto DoubleAnimation non sono strettamente double. Si tratta invece di un valore Nullable per Double. Il valore predefinito per questi valori è Null, non 0. Questo valore Null è il modo in cui il sistema di animazione distingue che non è stato impostato in modo specifico un valore. Non esiste il tipo Nullable delle estensioni del componente Visual C++ (C++/CX) e al suo posto si usa il tipo IReference.

Costruttori

DoubleAnimation()

Inizializza una nuova istanza della classe DoubleAnimation .

Proprietà

AutoReverse

Ottiene o imposta un valore che indica se la sequenza temporale viene riprodotta in senso inverso dopo il completamento di un'iterazione in avanti.

(Ereditato da Timeline)
BeginTime

Ottiene o imposta l'ora di inizio della sequenza temporale .

(Ereditato da Timeline)
By

Ottiene o imposta la quantità totale in base alla quale l'animazione modifica il valore iniziale.

ByProperty

Identifica la proprietà di dipendenza By .

Dispatcher

Restituisce null sempre in un'app SDK per app di Windows. Usare invece DispatcherQueue .

(Ereditato da DependencyObject)
DispatcherQueue

Ottiene l'oggetto a cui è associato l'oggetto DispatcherQueue . DispatcherQueue Rappresenta una funzionalità che può accedere a nel thread dell'interfaccia DependencyObject utente anche se il codice viene avviato da un thread non dell'interfaccia utente.

(Ereditato da DependencyObject)
Duration

Ottiene o imposta la durata di riproduzione di questa sequenza temporale, senza contare le ripetizioni.

(Ereditato da Timeline)
EasingFunction

Ottiene o imposta la funzione di interpolazione applicata all'animazione.

EasingFunctionProperty

Identifica la proprietà di dipendenza EasingFunction .

EnableDependentAnimation

Ottiene o imposta un valore che dichiara se le proprietà animate considerate animazioni dipendenti devono essere autorizzate a usare questa dichiarazione di animazione.

EnableDependentAnimationProperty

Identifica la proprietà di dipendenza EnableDependentAnimation .

FillBehavior

Ottiene o imposta un valore che specifica il comportamento dell'animazione dopo che raggiunge la fine del periodo attivo.

(Ereditato da Timeline)
From

Ottiene o imposta il valore iniziale dell'animazione.

FromProperty

Identifica la proprietà Di dipendenza.

RepeatBehavior

Ottiene o imposta il comportamento di ripetizione della sequenza temporale.

(Ereditato da Timeline)
SpeedRatio

Ottiene o imposta la frequenza, rispetto al relativo elemento padre, in cui l'ora avanza per questa sequenza temporale.

(Ereditato da Timeline)
To

Ottiene o imposta il valore finale dell'animazione.

ToProperty

Identifica la proprietà To dependency.

Metodi

ClearValue(DependencyProperty)

Cancella il valore locale di una proprietà di dipendenza.

(Ereditato da DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Restituisce qualsiasi valore di base stabilito per una proprietà di dipendenza, che si applica nei casi in cui un'animazione non è attiva.

(Ereditato da DependencyObject)
GetValue(DependencyProperty)

Restituisce il valore effettivo corrente di una proprietà di dipendenza da dependencyObject.

(Ereditato da DependencyObject)
ReadLocalValue(DependencyProperty)

Restituisce il valore locale di una proprietà di dipendenza, se è impostato un valore locale.

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche apportate a una dipendenza specifica in questa istanza di DependencyObject .

(Ereditato da DependencyObject)
SetValue(DependencyProperty, Object)

Imposta il valore locale di una proprietà di dipendenza su dependencyObject.

(Ereditato da DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annulla una notifica di modifica registrata in precedenza chiamando RegisterPropertyChangedCallback.

(Ereditato da DependencyObject)

Eventi

Completed

Si verifica al completamento della riproduzione dell'oggetto Storyboard .

(Ereditato da Timeline)

Si applica a

Vedi anche