DiscreteInt16KeyFrame Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
public ref class DiscreteInt16KeyFrame : System::Windows::Media::Animation::Int16KeyFrame
public class DiscreteInt16KeyFrame : System.Windows.Media.Animation.Int16KeyFrame
type DiscreteInt16KeyFrame = class
inherit Int16KeyFrame
Public Class DiscreteInt16KeyFrame
Inherits Int16KeyFrame
- Héritage
Exemples
L’interpolation d’une animation décrit la manière une animation transite entre les valeurs sur sa durée. En sélectionnant le type d’image clé que vous utilisez avec votre animation, vous pouvez définir la méthode d’interpolation correspondant à ce segment d’image clé. Il existe trois types de méthodes d’interpolation : linéaire, discrète et spline. Cet exemple utilise un pour illustrer ces types d’interpolation DoubleAnimationUsingKeyFrames .
L’exemple suivant utilise chacune des différentes méthodes d’interpolation disponibles pour la DoubleAnimationUsingKeyFrames classe pour animer la position d’un Rectangle.
Pendant les trois premières secondes, utilise un instance de la LinearDoubleKeyFrame classe pour déplacer le rectangle le long d’un chemin à un rythme régulier de sa position de départ à la position 500. Les images clés linéaires, comme LinearDoubleKeyFrame créer une transition linéaire en douceur entre les valeurs.
À la fin de la quatrième seconde, utilise un instance de la DiscreteDoubleKeyFrame classe pour déplacer soudainement le rectangle à la position suivante. Des images clés discrètes comme DiscreteDoubleKeyFrame créer des sauts soudains entre les valeurs. Dans cet exemple, le rectangle se trouve à la position de départ et passe subitement à la position 500.
Dans les deux dernières secondes, utilise un instance de la SplineDoubleKeyFrame classe pour déplacer le rectangle à sa position de départ. Spline les images clés comme SplineDoubleKeyFrame créer une transition de variable entre les valeurs en fonction de la valeur de la KeySpline propriété. Dans cet exemple, le rectangle commence par se déplacer lentement, puis s’accélère de façon exponentielle vers la fin du segment de temps
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
using System.Windows.Media;
namespace Microsoft.Samples.KeyFrameExamples
{
/// <summary>
/// This example shows how to use the DoubleAnimationUsingKeyFrames class to
/// animate the position of an object.
/// Key frame animations enable you to create complex animations
/// by specifying multiple destination values
/// and controlling the animation's interpolation method.
/// </summary>
public class AltDoubleAnimationUsingKeyFramesExample : Page
{
public AltDoubleAnimationUsingKeyFramesExample()
{
Title = "DoubleAnimationUsingKeyFrames Example";
Background = Brushes.White;
Margin = new Thickness(20);
// Create a NameScope for this page so that
// Storyboards can be used.
NameScope.SetNameScope(this, new NameScope());
// Create a rectangle.
Rectangle aRectangle = new Rectangle();
aRectangle.Width = 100;
aRectangle.Height = 100;
aRectangle.Stroke = Brushes.Black;
aRectangle.StrokeThickness = 5;
// Create a Canvas to contain and
// position the rectangle.
Canvas containerCanvas = new Canvas();
containerCanvas.Width = 610;
containerCanvas.Height = 300;
containerCanvas.Children.Add(aRectangle);
Canvas.SetTop(aRectangle, 100);
Canvas.SetLeft(aRectangle, 10);
// Create a TranslateTransform to
// move the rectangle.
TranslateTransform animatedTranslateTransform =
new TranslateTransform();
aRectangle.RenderTransform = animatedTranslateTransform;
// Assign the TranslateTransform a name so that
// it can be targeted by a Storyboard.
this.RegisterName(
"AnimatedTranslateTransform", animatedTranslateTransform);
// Create a DoubleAnimationUsingKeyFrames to
// animate the TranslateTransform.
DoubleAnimationUsingKeyFrames translationAnimation
= new DoubleAnimationUsingKeyFrames();
translationAnimation.Duration = TimeSpan.FromSeconds(6);
// Animate from the starting position to 500
// over the first second using linear
// interpolation.
translationAnimation.KeyFrames.Add(
new LinearDoubleKeyFrame(
500, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(3))) // KeyTime
);
// Animate from 500 (the value of the previous key frame)
// to 400 at 4 seconds using discrete interpolation.
// Because the interpolation is discrete, the rectangle will appear
// to "jump" from 500 to 400.
translationAnimation.KeyFrames.Add(
new DiscreteDoubleKeyFrame(
400, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(4))) // KeyTime
);
// Animate from 400 (the value of the previous key frame) to 0
// over two seconds, starting at 4 seconds (the key time of the
// last key frame) and ending at 6 seconds.
translationAnimation.KeyFrames.Add(
new SplineDoubleKeyFrame(
0, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(6)), // KeyTime
new KeySpline(0.6,0.0,0.9,0.0) // KeySpline
)
);
// Set the animation to repeat forever.
translationAnimation.RepeatBehavior = RepeatBehavior.Forever;
// Set the animation to target the X property
// of the object named "AnimatedTranslateTransform."
Storyboard.SetTargetName(translationAnimation, "AnimatedTranslateTransform");
Storyboard.SetTargetProperty(
translationAnimation, new PropertyPath(TranslateTransform.XProperty));
// Create a storyboard to apply the animation.
Storyboard translationStoryboard = new Storyboard();
translationStoryboard.Children.Add(translationAnimation);
// Start the storyboard after the rectangle loads.
aRectangle.Loaded += delegate(object sender, RoutedEventArgs e)
{
translationStoryboard.Begin(this);
};
Content = containerCanvas;
}
}
}
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Shapes
Imports System.Windows.Media.Animation
Imports System.Windows.Media
Namespace Microsoft.Samples.KeyFrameExamples
''' <summary>
''' This example shows how to use the DoubleAnimationUsingKeyFrames class to
''' animate the position of an object.
''' Key frame animations enable you to create complex animations
''' by specifying multiple destination values
''' and controlling the animation's interpolation method.
''' </summary>
Public Class AltDoubleAnimationUsingKeyFramesExample
Inherits Page
Public Sub New()
Title = "DoubleAnimationUsingKeyFrames Example"
Background = Brushes.White
Margin = New Thickness(20)
' Create a NameScope for this page so that
' Storyboards can be used.
NameScope.SetNameScope(Me, New NameScope())
' Create a rectangle.
Dim aRectangle As New Rectangle()
aRectangle.Width = 100
aRectangle.Height = 100
aRectangle.Stroke = Brushes.Black
aRectangle.StrokeThickness = 5
' Create a Canvas to contain and
' position the rectangle.
Dim containerCanvas As New Canvas()
containerCanvas.Width = 610
containerCanvas.Height = 300
containerCanvas.Children.Add(aRectangle)
Canvas.SetTop(aRectangle, 100)
Canvas.SetLeft(aRectangle, 10)
' Create a TranslateTransform to
' move the rectangle.
Dim animatedTranslateTransform As New TranslateTransform()
aRectangle.RenderTransform = animatedTranslateTransform
' Assign the TranslateTransform a name so that
' it can be targeted by a Storyboard.
Me.RegisterName("AnimatedTranslateTransform", animatedTranslateTransform)
' Create a DoubleAnimationUsingKeyFrames to
' animate the TranslateTransform.
Dim translationAnimation As New DoubleAnimationUsingKeyFrames()
translationAnimation.Duration = TimeSpan.FromSeconds(6)
' Animate from the starting position to 500
' over the first second using linear
' interpolation.
translationAnimation.KeyFrames.Add(New LinearDoubleKeyFrame(500, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(3)))) ' KeyTime - Target value (KeyValue)
' Animate from 500 (the value of the previous key frame)
' to 400 at 4 seconds using discrete interpolation.
' Because the interpolation is discrete, the rectangle will appear
' to "jump" from 500 to 400.
translationAnimation.KeyFrames.Add(New DiscreteDoubleKeyFrame(400, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(4)))) ' KeyTime - Target value (KeyValue)
' Animate from 400 (the value of the previous key frame) to 0
' over two seconds, starting at 4 seconds (the key time of the
' last key frame) and ending at 6 seconds.
translationAnimation.KeyFrames.Add(New SplineDoubleKeyFrame(0, KeyTime.FromTimeSpan(TimeSpan.FromSeconds(6)), New KeySpline(0.6,0.0,0.9,0.0))) ' KeySpline - KeyTime - Target value (KeyValue)
' Set the animation to repeat forever.
translationAnimation.RepeatBehavior = RepeatBehavior.Forever
' Set the animation to target the X property
' of the object named "AnimatedTranslateTransform."
Storyboard.SetTargetName(translationAnimation, "AnimatedTranslateTransform")
Storyboard.SetTargetProperty(translationAnimation, New PropertyPath(TranslateTransform.XProperty))
' Create a storyboard to apply the animation.
Dim translationStoryboard As New Storyboard()
translationStoryboard.Children.Add(translationAnimation)
' Start the storyboard after the rectangle loads.
AddHandler aRectangle.Loaded, Sub(sender As Object, e As RoutedEventArgs) translationStoryboard.Begin(Me)
Content = containerCanvas
End Sub
End Class
End Namespace
<!-- This example shows how to use the DoubleAnimationUsingKeyFrames to
animate the position of an object.
Key frame animations enable you to create complex animations
by specifying multiple destination values
and controlling the animation's interpolation method.
-->
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DoubleAnimationUsingKeyFrames Example"
Background="White" Margin="20">
<Canvas Width="610" Height="300">
<!-- The position of this rectangle is animated using
a key frame animation. -->
<Rectangle
Canvas.Top="100"
Canvas.Left="10"
Height="100"
Width="100"
Stroke="Black"
StrokeThickness="5">
<Rectangle.RenderTransform>
<TranslateTransform x:Name="AnimatedTranslateTransform" />
</Rectangle.RenderTransform>
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard>
<!-- Animate the TranslateTransform.X property using 3 KeyFrames
which animates the rectangle along a straight line.
This animation repeats indefinitely. -->
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="AnimatedTranslateTransform"
Storyboard.TargetProperty="X"
Duration="0:0:6"
RepeatBehavior="Forever">
<!-- 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>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</Canvas>
</Page>
Toutes les <classes Type>AnimationUsingKeyFrames ne prennent pas en charge toutes les méthodes d’interpolation. Pour plus d’informations, consultez La vue d’ensemble des animations d’images clés.
Remarques
Cette classe est utilisée dans le cadre d’un Int16KeyFrameCollection avec un Int16AnimationUsingKeyFrames pour animer une Int16 valeur de propriété le long d’un ensemble d’images clés.
Une image clé définit un segment du Int16AnimationUsingKeyFrames auquel elle appartient. Chaque image clé a une cible Value et un KeyTime. spécifie KeyTime l’heure à laquelle l’image clé Value doit être atteinte. Une image clé s’anime de la valeur cible de l’image clé précédente vers sa propre valeur cible. Il commence à la fin de l’image clé précédente et se termine lorsque sa propre heure de clé est atteinte.
Des images clés discrètes, comme DiscreteInt16KeyFrame créer des « sauts » soudains entre les valeurs (aucune interpolation). En d’autres termes, la propriété animée ne change pas tant que l’heure clé de l’image clé n’est pas atteinte, à partir de laquelle la propriété animée passe soudainement à la valeur cible.
Constructeurs
DiscreteInt16KeyFrame() |
Initialise une nouvelle instance de la classe DiscreteInt16KeyFrame. |
DiscreteInt16KeyFrame(Int16) |
Initialise une nouvelle instance de la classe DiscreteInt16KeyFrame avec la valeur de fin spécifiée. |
DiscreteInt16KeyFrame(Int16, KeyTime) |
Initialise une nouvelle instance de la classe DiscreteInt16KeyFrame avec la valeur de fin et le temps clé spécifiés. |
Propriétés
CanFreeze |
Obtient une valeur qui indique si l’objet peut être rendu non modifiable. (Hérité de Freezable) |
DependencyObjectType |
Obtient le DependencyObjectType qui encapsule le type CLR de cette instance. (Hérité de DependencyObject) |
Dispatcher |
Obtient le Dispatcher associé à DispatcherObject. (Hérité de DispatcherObject) |
IsFrozen |
Obtient une valeur qui indique si l’objet est actuellement modifiable. (Hérité de Freezable) |
IsSealed |
Récupère une valeur qui indique si cette instance est actuellement sealed (en lecture seule). (Hérité de DependencyObject) |
KeyTime |
Obtient ou définit le moment auquel le Value cible de l’image clé doit être atteint. (Hérité de Int16KeyFrame) |
Value |
Obtient ou définit la valeur cible de l’image clé. (Hérité de Int16KeyFrame) |
Méthodes
CheckAccess() |
Détermine si le thread appelant a accès à ce DispatcherObject. (Hérité de DispatcherObject) |
ClearValue(DependencyProperty) |
Efface la valeur locale d’une propriété. La propriété à effacer est spécifiée par un identificateur DependencyProperty. (Hérité de DependencyObject) |
ClearValue(DependencyPropertyKey) |
Efface la valeur locale d’une propriété en lecture seule. La propriété à effacer est spécifiée par DependencyPropertyKey. (Hérité de DependencyObject) |
Clone() |
Crée un clone modifiable de Freezable, en créant des copies complètes des valeurs de l’objet. Lors de la copie des propriétés de dépendance de l’objet, cette méthode copie les expressions (qui peuvent ne plus se résoudre), mais pas les animations ni leurs valeurs actuelles. (Hérité de Freezable) |
CloneCore(Freezable) |
Fait de l’instance un clone (copie complète) du Freezable spécifié utilisant des valeurs de propriété (non animée) de base. (Hérité de Freezable) |
CloneCurrentValue() |
Crée un clone modifiable (copie complète) de Freezable en utilisant ses valeurs actuelles. (Hérité de Freezable) |
CloneCurrentValueCore(Freezable) |
Fait de l’instance un clone (copie complète) modifiable du Freezable spécifié à l’aide des valeurs de propriété actuelles. (Hérité de Freezable) |
CoerceValue(DependencyProperty) |
Convertit la valeur de la propriété de dépendance spécifiée. Pour cela, on appelle toute fonction CoerceValueCallback spécifiée dans les métadonnées de propriété pour la propriété de dépendance telle qu’elle existe sur le DependencyObject appelant. (Hérité de DependencyObject) |
CreateInstance() |
Initialise une nouvelle instance de la classe Freezable. (Hérité de Freezable) |
CreateInstanceCore() |
Crée une instance de DiscreteInt16KeyFrame. |
Equals(Object) |
Détermine si un DependencyObject fourni est équivalent au DependencyObject réel. (Hérité de DependencyObject) |
Freeze() |
Rend l’objet actif non modifiable et attribue à sa propriété IsFrozen la valeur |
FreezeCore(Boolean) |
Rend l'objet Freezable non modifiable ou vérifie si celui-ci peut être rendu non modifiable ou pas. (Hérité de Freezable) |
GetAsFrozen() |
Crée une copie figée de Freezable, à l'aide des valeurs de propriété (non-animées) de base. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence. (Hérité de Freezable) |
GetAsFrozenCore(Freezable) |
Transforme l’instance en clone figé du Freezable spécifié utilisant des valeurs de propriété (non animée) de base. (Hérité de Freezable) |
GetCurrentValueAsFrozen() |
Crée une copie figée de Freezable à l'aide des valeurs de propriété actuelles. Étant donné que la copie est figée, tous les sous-objets figés sont copiés par référence. (Hérité de Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
Convertit l’instance actuelle en un clone figé du Freezable spécifié. Si l’objet a des propriétés de dépendance animées, leurs valeurs animées actuelles sont copiées. (Hérité de Freezable) |
GetHashCode() |
Obtient un code de hachage pour ce DependencyObject. (Hérité de DependencyObject) |
GetLocalValueEnumerator() |
Crée un énumérateur spécialisé pour déterminer quelles propriétés de dépendance ont des valeurs définies localement sur ce DependencyObject. (Hérité de DependencyObject) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
GetValue(DependencyProperty) |
Retourne la valeur effective actuelle d’une propriété de dépendance sur cette instance d’un DependencyObject. (Hérité de DependencyObject) |
InterpolateValue(Int16, Double) |
Retourne la valeur interpolée d’une image clé spécifique selon l’incrément de progression fourni. (Hérité de Int16KeyFrame) |
InterpolateValueCore(Int16, Double) |
Utilise une interpolation discrète pour passer de la valeur de l’image clé précédente à la valeur de l’image clé actuelle. |
InvalidateProperty(DependencyProperty) |
Réévalue la valeur effective de la propriété de dépendance spécifiée. (Hérité de DependencyObject) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
OnChanged() |
Appelé lorsque l’objet Freezable actuel est modifié. (Hérité de Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Garantit que les pointeurs de contexte appropriés sont établis pour un membre de données de type DependencyObjectType qui vient juste d'être défini. (Hérité de Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code. (Hérité de Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Substitue l’implémentation DependencyObject de OnPropertyChanged(DependencyPropertyChangedEventArgs) pour appeler également tous les gestionnaires Changed en réponse à une propriété de dépendance variable de type Freezable. (Hérité de Freezable) |
ReadLocalValue(DependencyProperty) |
Retourne la valeur locale d’une propriété de dépendance, si elle existe. (Hérité de DependencyObject) |
ReadPreamble() |
Garantit que Freezable est accessible à partir d'un thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API lisant les membres de données qui ne sont pas des propriétés de dépendance. (Hérité de Freezable) |
SetCurrentValue(DependencyProperty, Object) |
Définit la valeur d’une propriété de dépendance sans modifier sa valeur source. (Hérité de DependencyObject) |
SetValue(DependencyProperty, Object) |
Définit la valeur locale d’une propriété de dépendance, spécifiée par son identificateur de propriété de dépendance. (Hérité de DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Définit la valeur locale d’une propriété de dépendance en lecture seule, spécifiée par l’identificateur DependencyPropertyKey de la propriété de dépendance. (Hérité de DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Retourne une valeur qui indique si les processus de sérialisation doivent sérialiser la valeur de la propriété de dépendance fournie. (Hérité de DependencyObject) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
VerifyAccess() |
Garantit que le thread appelant a accès à DispatcherObject. (Hérité de DispatcherObject) |
WritePostscript() |
Déclenche l’événement Changed pour le Freezable et appelle sa méthode OnChanged(). Les classes qui dérivent de Freezable doivent appeler cette méthode à la fin de toute API qui modifie des membres de classe qui ne sont pas stockés en tant que propriétés de dépendance. (Hérité de Freezable) |
WritePreamble() |
Vérifie que le Freezable n'est pas figé et que son accès s'effectue à partir d'un contexte de thread valide. Les héritiers de Freezable doivent appeler cette méthode au début de toute API écrivant dans les membres de données qui ne sont pas des propriétés de dépendance. (Hérité de Freezable) |
Événements
Changed |
Se produit lorsque Freezable ou un objet qu'il contient est modifié. (Hérité de Freezable) |
Implémentations d’interfaces explicites
IKeyFrame.Value |
Obtient ou définit la valeur associée à une instance KeyTime. (Hérité de Int16KeyFrame) |