Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique décrit les comportements de minutage des animations et d’autres Timeline objets.
Conditions préalables
Pour comprendre cette rubrique, vous devez être familiarisé avec les fonctionnalités d’animation de base. Pour plus d’informations, consultez la vue d’ensemble de l’animation.
Types de chronologie
Timeline représente un segment de temps. Il fournit des propriétés qui vous permettent de spécifier la longueur de ce segment, le moment où il doit démarrer, le nombre de fois qu’il se répète, le temps de progression rapide dans ce segment, et bien plus encore.
Les classes qui héritent de la classe de chronologie fournissent des fonctionnalités supplémentaires, telles que l’animation et la lecture multimédia. WPF fournit les types suivants Timeline .
Type de chronologie | Descriptif |
---|---|
AnimationTimeline | Classe de base abstraite pour les objets Timeline qui génèrent des valeurs de sortie pour des propriétés animées. |
MediaTimeline | Génère la sortie à partir d’un fichier multimédia. |
ParallelTimeline | Un type de TimelineGroup qui regroupe et contrôle les objets enfants Timeline. |
Storyboard | Un type de ParallelTimeline qui fournit des informations de ciblage pour les objets Timeline qu’il contient. |
Timeline | Classe de base abstraite qui définit les comportements de synchronisation. |
TimelineGroup | Classe abstraite pour Timeline les objets qui peuvent contenir d’autres Timeline objets. |
Propriétés qui contrôlent la longueur d’une chronologie
Un Timeline représente un segment de temps et la longueur d’une chronologie peut être décrite de différentes manières. Le tableau suivant définit plusieurs termes pour décrire la longueur d’une chronologie.
Terme | Descriptif | Propriétés |
---|---|---|
Durée simple | Temps nécessaire à une chronologie pour réaliser une seule itération vers l’avant. | Duration |
Une répétition | La durée nécessaire pour qu'une chronologie soit lue une fois vers l'avant et, si la propriété AutoReverse est vraie, lue une fois à l'envers. | Duration, AutoReverse |
Période active | Durée nécessaire pour qu’une chronologie termine toutes les répétitions spécifiées par sa RepeatBehavior propriété. | Duration, , AutoReverseRepeatBehavior |
La propriété Duration
Comme mentionné précédemment, une chronologie représente un segment de temps. La longueur de ce segment est déterminée par la chronologie Duration. Lorsqu’une chronologie atteint la fin de sa durée, elle cesse de jouer. Si la chronologie comporte des chronologies enfants, elles arrêtent également de jouer. Dans le cas d’une animation, Duration spécifie combien de temps l’animation met pour passer de sa valeur de départ à sa valeur de fin. La durée d’une chronologie est parfois appelée sa durée simple, pour faire la distinction entre la durée d’une itération unique et la durée totale du déroulement de l’animation, y compris les répétitions. Vous pouvez spécifier une durée à l’aide d’une valeur de temps finie ou des valeurs Automatic spéciales ou Forever. La durée d’une animation doit être résolue en une valeur TimeSpan, afin qu’elle puisse passer d’une valeur à une autre.
L’exemple suivant montre un DoubleAnimation avec un Duration de cinq secondes.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5" />
Les chronologies de conteneur, telles que Storyboard et ParallelTimeline, ont une durée par défaut , Automaticce qui signifie qu’elles se terminent automatiquement quand leur dernier enfant cesse de jouer. L’exemple suivant montre un Storyboard dont Duration a un temps de résolution de cinq secondes, le temps nécessaire pour que tous ses objets enfants DoubleAnimation soient exécutés.
<Storyboard >
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:3" />
</Storyboard>
En définissant la Duration d'une chronologie de conteneur à une TimeSpan valeur, vous pouvez obliger celle-ci à jouer plus longtemps ou plus court que ne le feraient ses objets enfants Timeline. Si vous définissez la Duration valeur sur une valeur inférieure à la longueur des objets enfants Timeline de la chronologie du conteneur, les objets enfants Timeline arrêtent de jouer lorsque la chronologie du conteneur le fait. L'exemple suivant règle le Duration du Storyboard des exemples précédents à trois secondes. Par conséquent, le premier DoubleAnimation cesse de progresser après trois secondes, lorsqu’il a animé la largeur du rectangle cible à 60 pixels.
<Storyboard Duration="0:0:3">
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:3" />
</Storyboard>
La Propriété RepeatBehavior
La RepeatBehavior propriété d’un Timeline contrôle combien de fois il répète sa durée simple. À l’aide de la RepeatBehavior propriété, vous pouvez spécifier le nombre de fois que la chronologie est lue (itération Count) ou la durée totale pendant laquelle elle doit être lue (une répétition Duration). Dans les deux cas, l’animation passe par autant d’exécutions de début à fin que nécessaire pour remplir le nombre ou la durée demandés. Par défaut, les chronologies ont un nombre d’itérations de 1.0
, ce qui signifie qu’elles jouent une fois et ne se répètent pas du tout.
L’exemple suivant utilise la RepeatBehavior propriété pour effectuer un DoubleAnimation jeu pendant deux fois sa durée simple en spécifiant un nombre d’itérations.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="2x" />
L’exemple suivant utilise la propriété RepeatBehavior pour faire jouer DoubleAnimation pendant la moitié de sa durée simple.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="0.5x" />
Si vous définissez la RepeatBehavior propriété d’un Timeline sur Forever, le Timeline se répète jusqu'à ce qu'il s'arrête en intervenant directement ou par le système de minutage. L’exemple suivant utilise la RepeatBehavior propriété pour rendre le DoubleAnimation jeu indéfiniment.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="Forever" />
Pour obtenir un exemple supplémentaire, consultez Répéter une animation.
La propriété AutoReverse
La propriété AutoReverse spécifie si un Timeline sera joué à l'envers à la fin de chaque itération vers l'avant. L’exemple suivant définit la propriété AutoReverse d’un DoubleAnimation à true
; en conséquence, il s'anime de zéro à 100, puis de 100 à zéro. Il joue pendant une durée totale de 10 secondes.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
AutoReverse="True" />
Lorsque vous utilisez une valeur Count pour spécifier le RepeatBehavior d'un Timeline et que la propriété AutoReverse de ce Timeline est true
, une seule répétition se compose d’une itération vers l’avant suivie d’une itération vers l’arrière. Le suivant exemple configure le RepeatBehavior du DoubleAnimation de l'exemple précédent à une valeur de deux Count. Par conséquent, le DoubleAnimation est lu pendant 20 secondes : vers l'avant pendant cinq secondes, vers l'arrière pendant cinq secondes, vers l'avant pendant cinq secondes à nouveau, puis vers l'arrière pendant cinq secondes.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="2"
AutoReverse="True" />
Si une chronologie de conteneur a des objets enfants Timeline, ils sont inversés lorsque la chronologie du conteneur s'inverse. Pour obtenir d’autres exemples, consultez Spécifier si une chronologie est automatiquement inversée.
La propriété BeginTime
La BeginTime propriété vous permet de spécifier le démarrage d’une chronologie. L’heure de début d’une chronologie est relative à sa chronologie parente. Une heure de début de zéro seconde signifie que la chronologie démarre dès qu’elle commence par le parent ; toute autre valeur crée un décalage entre le début de la lecture de la chronologie parente et la lecture de la chronologie enfant. Par exemple, une heure de début de deux secondes signifie que la chronologie commence à jouer lorsque son parent a atteint une heure de deux secondes. Par défaut, toutes les chronologies ont une heure de début de zéro seconde. Vous pouvez également définir l’heure null
de début d’une chronologie, ce qui empêche le démarrage de la chronologie. Dans WPF, vous spécifiez null à l’aide de l’extension de balisage x :Null.
Notez que l’heure de début n’est pas appliquée chaque fois qu’une chronologie se répète en raison de son RepeatBehavior paramètre. Si vous deviez créer une animation avec une BeginTime durée de 10 secondes et un RepeatBehavior de Forever, il y aurait un délai de 10 secondes avant que l’animation soit lancée pour la première fois, mais pas pour chaque répétition successive. Toutefois, si la chronologie parente de l'animation venait à redémarrer ou à se répéter, un délai de 10 secondes se produirait.
La BeginTime propriété est utile pour les chronologies décalées. L’exemple suivant crée un Storyboard objet enfant avec deux objets enfants DoubleAnimation . La première animation a une Duration valeur de cinq secondes, et la seconde a une Duration durée de 3 secondes. L'exemple définit le BeginTime du deuxième DoubleAnimation à 5 secondes, de sorte qu'il démarre après la fin du premier DoubleAnimation.
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
BeginTime="0:0:0" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:3"
BeginTime="0:0:5" />
</Storyboard>
La propriété FillBehavior
Lorsqu'un Timeline atteint la fin de sa durée active totale, la propriété FillBehavior spécifie s'il s'arrête ou s'il conserve sa dernière valeur. Une animation avec FillBehaviorHoldEnd maintient sa valeur de sortie : la propriété animée conserve la dernière valeur de l'animation. Une valeur de Stop entraîne que l'animation cesse d'affecter sa propriété cible après la fin de l'animation.
L’exemple suivant crée un Storyboard objet enfant avec deux objets enfants DoubleAnimation . Les deux DoubleAnimation objets animent le Width d'un Rectangle de 0 à 100. Les Rectangle éléments ont des valeurs non animées Width de 500 [pixels indépendants de l’appareil].
La FillBehavior propriété du premier DoubleAnimation est définie sur HoldEnd, la valeur par défaut. Par conséquent, la largeur du rectangle reste à 100 après la fin de la DoubleAnimation.
La FillBehavior propriété du deuxième DoubleAnimation est définie sur Stop. Par conséquent, la Width du deuxième Rectangle se rétablit à 500 après que la DoubleAnimation soit finie.
<Rectangle Name="MyRectangle"
Width="500" Height="100"
Opacity="1" Fill="Red">
</Rectangle>
<Rectangle Name="MyOtherRectangle"
Width="500" Height="100"
Opacity="1" Fill="Orange">
</Rectangle>
<Button Content="Start FillBehavior Example">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
FillBehavior="HoldEnd" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
FillBehavior="Stop" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
Propriétés qui contrôlent la vitesse d’une chronologie
La Timeline classe fournit trois propriétés pour spécifier sa vitesse :
SpeedRatio – Spécifie le taux, par rapport à son parent, auquel le temps progresse pour un Timeline. Les valeurs supérieures à un augmentent la vitesse du Timeline et de ses objets enfants Timeline ; les valeurs comprises entre zéro et un la ralentissent. Une valeur de un indique que Timeline progresse à la même vitesse que son parent. Le paramètre SpeedRatio d'une chronologie de conteneur affecte tous ses objets enfants Timeline de la même manière.
AccelerationRatio : spécifie le pourcentage de la ligne temporelle Duration consacré à l'accélération. Pour obtenir un exemple, consultez Comment : accélérer ou décélérer une animation.
DecelerationRatio - Spécifie le pourcentage de la Duration d'une chronologie consacré à la décélération. Pour obtenir un exemple, consultez Comment : accélérer ou décélérer une animation.
Voir aussi
.NET Desktop feedback