Procedura: Animare un oggetto usando fotogrammi chiave
In questo esempio viene illustrato come animare un oggetto , che in questo esempio è la proprietà Background di un controllo Page utilizzando fotogrammi chiave.
Esempio
Nell'esempio seguente viene utilizzata la classe ObjectAnimationUsingKeyFrames per animare le modifiche al colore per la proprietà Background di un controllo Page. L'animazione di esempio passa a un pennello di sfondo diverso a intervalli regolari. Questa animazione usa la classe DiscreteObjectKeyFrame per creare tre fotogrammi chiave diversi. L'animazione usa fotogrammi chiave nel modo seguente:
Alla fine del primo secondo, anima un'istanza della classe LinearGradientBrush. Questa sezione dell'esempio applica una sfumatura lineare al colore di sfondo in modo che il colore passi dal giallo all'arancione al rosso.
Alla fine del secondo successivo, anima un'istanza della classe RadialGradientBrush. Questa sezione dell'esempio applica una sfumatura radiale al colore di sfondo in modo che il colore passi da bianco a blu a nero.
Alla fine del terzo secondo, anima un'istanza della classe DrawingBrush. Questa sezione dell'esempio applica uno schema checkerboard allo sfondo.
L'animazione inizia di nuovo e si ripete a tempo indeterminato.
Nota
DiscreteObjectKeyFrame è l'unico tipo di fotogramma chiave che è possibile usare con la classe ObjectAnimationUsingKeyFrames. Fotogrammi chiave come DiscreteObjectKeyFrame creano cambiamenti improvvisi nei valori, ovvero, in questo esempio, il colore cambia all’improvviso.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Page.Triggers>
<EventTrigger RoutedEvent="Page.Loaded">
<BeginStoryboard>
<Storyboard>
<!-- ObjectAnimationUsingKeyFrames is used to animate properties that take
an object as a value. This animation lasts for 4 seconds using 3 KeyFrames which
swap different brush objects at regular intervals, making the background of the Page
change. -->
<ObjectAnimationUsingKeyFrames
Storyboard.TargetProperty="Background"
Duration="0:0:4" RepeatBehavior="Forever">
<ObjectAnimationUsingKeyFrames.KeyFrames>
<!-- Note: Only discrete interpolation (DiscreteObjectKeyFrame) is available for
use with ObjectAnimationUsingKeyFrames which merely swaps objects according to
a specified timeline. Other types of interpolation are too problematic to apply
to objects. -->
<!-- Using a DiscreteObjectKeyFrame, the Page Background suddenly changes
to a LinearGradientBrush after the first second of the animation. -->
<DiscreteObjectKeyFrame KeyTime="0:0:1">
<DiscreteObjectKeyFrame.Value>
<LinearGradientBrush>
<LinearGradientBrush.GradientStops>
<GradientStop Color="Yellow" Offset="0.0" />
<GradientStop Color="Orange" Offset="0.5" />
<GradientStop Color="Red" Offset="1.0" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
<!-- Using a DiscreteObjectKeyFrame, the Page Background suddenly changes
to a RadialGradientBrush after the second second of the animation. -->
<DiscreteObjectKeyFrame KeyTime="0:0:2">
<DiscreteObjectKeyFrame.Value>
<RadialGradientBrush GradientOrigin="0.75,0.25">
<RadialGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0.0" />
<GradientStop Color="MediumBlue" Offset="0.5" />
<GradientStop Color="Black" Offset="1.0" />
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
<!-- Using a DiscreteObjectKeyFrame, the Page Background suddenly
changes to a DrawingBrush (creates a checkerboard pattern) after the
third second of the animation. -->
<DiscreteObjectKeyFrame KeyTime="0:0:3">
<DiscreteObjectKeyFrame.Value>
<DrawingBrush Viewport="0,0,0.25,0.25" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="White">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,1,1" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Black"
Geometry="M 0,0 L0,0.5 0.5,0.5 0.5,1 1,1 1,0.5 0.5,0.5 0.5,0" />
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames.KeyFrames>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Page.Triggers>
</Page>
Per l'esempio completo, vedere Esempio di Animazione Basata su Fotogrammi Chiave.
Vedere anche
.NET Desktop feedback