Condividi tramite


ColorAnimation Classe

Definizione

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

public ref class ColorAnimation sealed : Timeline
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ColorAnimation final : Timeline
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class ColorAnimation final : Timeline
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ColorAnimation : Timeline
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class ColorAnimation : Timeline
Public NotInheritable Class ColorAnimation
Inherits Timeline
<ColorAnimation .../>
Ereditarietà
Object Platform::Object IInspectable DependencyObject Timeline ColorAnimation
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

L'esempio seguente mostra come usare ColorAnimation per animare il colore di sfondo di un oggetto StackPanel.

<StackPanel x:Name="myStackPanel" Background="Red"
  Loaded="Start_Animation">
  <StackPanel.Resources>
    <Storyboard x:Name="colorStoryboard">

      <!-- Animate the background color of the canvas from red to green
        over 4 seconds. -->
      <ColorAnimation Storyboard.TargetName="myStackPanel" 
        Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
        From="Red" To="Blue" Duration="0:0:4"/>

    </Storyboard>
  </StackPanel.Resources>
</StackPanel>
<StackPanel x:Name="myStackPanel" Background="Red"
Loaded="Start_Animation">
    <StackPanel.Resources>
        <Storyboard x:Name="colorStoryboard">

            <ColorAnimationUsingKeyFrames Storyboard.TargetName="myStackPanel" 
      Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
                
                <!-- Go from green to red in the first 2 seconds. LinearColorKeyFrame creates
                a smooth, linear animation between values. -->
                <LinearColorKeyFrame Value="Blue" KeyTime="00:00:02" />

                <!-- In the next half second, go to yellow. DiscreteColorKeyFrame creates a 
                sudden jump between values. -->
                <DiscreteColorKeyFrame Value="Yellow" KeyTime="00:00:2.5" />

                <!-- In the final 2 seconds of the animation, go from yellow back to green. SplineColorKeyFrame 
                creates a variable transition between values depending on the KeySpline property. In this example,
                the animation starts off slow but toward the end of the time segment, it speeds up exponentially.-->
                <SplineColorKeyFrame Value="Green" KeyTime="00:00:4.5" KeySpline="0.6,0.0 0.9,0.00" />

            </ColorAnimationUsingKeyFrames>
        </Storyboard>
    </StackPanel.Resources>
</StackPanel>
<StackPanel Loaded="Start_Animation">
  <StackPanel.Resources>
    <Storyboard x:Name="colorStoryboard">
      <!-- Animate the background color of the canvas from red to green
        over 4 seconds. -->
      <ColorAnimation Storyboard.TargetName="mySolidColorBrush"
        Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4"/>
    </Storyboard>
  </StackPanel.Resources>

  <StackPanel.Background>
    <SolidColorBrush x:Name="mySolidColorBrush" Color="Red" />
  </StackPanel.Background>

</StackPanel>
// Start the animation when the object loads.
private void Start_Animation(object sender, RoutedEventArgs e)
{
    colorStoryboard.Begin();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    colorStoryboard.Begin()
End Sub
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"

In alternativa, è possibile creare in modo esplicito SolidColorBrush, denominarlo e specificare direttamente la relativa proprietà Color . L'esempio seguente mostra come creare la stessa animazione di quella precedente, ad eccezione del fatto che usa la destinazione della proprietà diretta.

<StackPanel Loaded="Start_Animation">
  <StackPanel.Resources>
    <Storyboard x:Name="colorStoryboard">
      <!-- Animate the background color of the canvas from red to green
        over 4 seconds. -->
      <ColorAnimation Storyboard.TargetName="mySolidColorBrush"
        Storyboard.TargetProperty="Color" From="Red" To="Blue" Duration="0:0:4"/>
    </Storyboard>
  </StackPanel.Resources>

  <StackPanel.Background>
    <SolidColorBrush x:Name="mySolidColorBrush" Color="Red" />
  </StackPanel.Background>

</StackPanel>
// Start the animation when the object loads.
private void Start_Animation(object sender, RoutedEventArgs e)
{
    colorStoryboard.Begin();
}
' Start the animation when the object loads
Private Sub Start_Animation(ByVal sender As Object, ByVal e As EventArgs)
    colorStoryboard.Begin()
End Sub

Commenti

Usare ColorAnimation per animare il valore della proprietà di qualsiasi proprietà di dipendenza di tipo Color.

L'interpolazione lineare per un colore indica che ognuno dei valori ARGB viene considerato come un byte e l'interpolazione è semplicemente un'operazione matematica. Si ottengono risultati ottimali dall'interpolazione dei colori se almeno uno dei componenti RGB è uguale o vicino allo stesso valore sia nel valore iniziale che nel valore finale.

In genere è 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. Ciò è dovuto al fatto che pochissime proprietà che visualizzano informazioni sul colore negli elementi dell'interfaccia utente sono effettivamente di tipo Color. La maggior parte è invece di tipo Brush. Per usare ColorAnimation negli elementi dell'interfaccia utente, in genere la destinazione è la proprietà Color di un oggetto SolidColorBrush che rappresenta il valore della sottoproprietà. La sintassi per questa operazione è illustrata nell'esempio XAML nella sezione "Esempi". Per altre info sulla destinazione delle proprietà indirette e su altri concetti relativi all'animazione con storyboard, vedi Animazioni con storyboard o sintassi property-path.

Un ColorAnimation 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 .

Le proprietà From, By e To di colorAnimation non sono strettamente color. Si tratta invece di un valore Nullable per Color. Il valore predefinito per questi valori è Null, non una struttura non inizializzata. 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

ColorAnimation()

Inizializza una nuova istanza della classe ColorAnimation .

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

Ottiene coreDispatcher a cui è associato questo oggetto. CoreDispatcher rappresenta una funzionalità che può accedere a DependencyObject nel thread dell'interfaccia 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