Langage

Storyboard Classe

Définition

Contrôle les animations avec une chronologie et fournit des informations de ciblage d’objet et de propriété pour ses animations enfants.

public ref class Storyboard sealed : Timeline
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
/// [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 Storyboard final : Timeline
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
[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 Storyboard : Timeline
Public NotInheritable Class Storyboard
Inherits Timeline
<Storyboard ...>
  oneOrMoreChildTimelines
</Storyboard>
Héritage
Object Platform::Object IInspectable DependencyObject Timeline Storyboard
Attributs

Exemples

L’exemple suivant montre comment utiliser les méthodes Begin, Stop, Pause et Resume pour contrôler la lecture d’un storyboard (animation). Un ensemble de boutons permet à l’utilisateur d’appeler ces méthodes.

<StackPanel x:Name="LayoutRoot" >
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">
            <DoubleAnimation From="1" To="6" Duration="00:00:6" 
            Storyboard.TargetName="rectScaleTransform" 
            Storyboard.TargetProperty="ScaleY">
                <DoubleAnimation.EasingFunction>
                    <BounceEase Bounces="2" EasingMode="EaseOut" 
                            Bounciness="2" />
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>
    </StackPanel.Resources>

    <!-- Button that begins animation. -->
    <Button Click="Animation_Begin"
         Margin="2" Content="Begin" />

    <!-- Button that pauses Animation. -->
    <Button Click="Animation_Pause"
         Margin="2" Content="Pause" />

    <!-- Button that resumes Animation. -->
    <Button Click="Animation_Resume"
         Margin="2" Content="Resume" />

    <!-- Button that stops Animation. Stopping the animation 
         returns the ellipse to its original location. -->
    <Button Click="Animation_Stop"
         Margin="2" Content="Stop" />

    <Rectangle Fill="Blue" Width="200" Height="30">
        <Rectangle.RenderTransform>
            <ScaleTransform x:Name="rectScaleTransform" />
        </Rectangle.RenderTransform>
    </Rectangle>

</StackPanel>
private void Animation_Begin(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
private void Animation_Pause(object sender, RoutedEventArgs e)
{
    myStoryboard.Pause();
}
private void Animation_Resume(object sender, RoutedEventArgs e)
{
    myStoryboard.Resume();
}
private void Animation_Stop(object sender, RoutedEventArgs e)
{
    myStoryboard.Stop();
}

Cet exemple montre comment créer et exécuter une animation entièrement dans le code.

<Button Content="Create animation" Click="Button_Click"/>
private void Button_Click(object sender, RoutedEventArgs e)
{
    Create_And_Run_Animation();
}

private void Create_And_Run_Animation()
{
    Storyboard justintimeStoryboard = null;
    // If the storyboard already exists in the resources dictionary,
    // get it and make sure it's stopped.
    if (LayoutRoot.Resources.ContainsKey("justintimeStoryboard"))
    {
        justintimeStoryboard = (Storyboard)LayoutRoot.Resources["justintimeStoryboard"];
        justintimeStoryboard.Stop();
    }
    // Otherwise, create the storyboard and add it to the resources dictionary.
    else
    {
        // Create a red rectangle that will be the target
        // of the animation.
        Rectangle myRectangle = new Rectangle();
        myRectangle.Width = 200;
        myRectangle.Height = 200;
        SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);
        myRectangle.Fill = myBrush;

        // Create the transform.
        TranslateTransform moveTransform = new TranslateTransform();
        moveTransform.X = 0;
        moveTransform.Y = 0;
        myRectangle.RenderTransform = moveTransform;

        // Add the rectangle to the tree.
        LayoutRoot.Children.Add(myRectangle);

        // Create a duration of 2 seconds.
        Duration duration = new Duration(TimeSpan.FromSeconds(2));
        // Create two DoubleAnimations and set their properties.
        DoubleAnimation myDoubleAnimationX = new DoubleAnimation();
        DoubleAnimation myDoubleAnimationY = new DoubleAnimation();
        myDoubleAnimationX.Duration = duration;
        myDoubleAnimationY.Duration = duration;
        justintimeStoryboard = new Storyboard();
        justintimeStoryboard.Duration = duration;
        justintimeStoryboard.Children.Add(myDoubleAnimationX);
        justintimeStoryboard.Children.Add(myDoubleAnimationY);
        Storyboard.SetTarget(myDoubleAnimationX, moveTransform);
        Storyboard.SetTarget(myDoubleAnimationY, moveTransform);

        // Set the X and Y properties of the Transform to be the target properties
        // of the two respective DoubleAnimations.
        Storyboard.SetTargetProperty(myDoubleAnimationX, "X");
        Storyboard.SetTargetProperty(myDoubleAnimationY, "Y");
        myDoubleAnimationX.To = 200;
        myDoubleAnimationY.To = 200;

        // Make the Storyboard a resource.
        LayoutRoot.Resources.Add("justintimeStoryboard", justintimeStoryboard);
    }

    // Begin the animation.
    justintimeStoryboard.Begin();
}

Remarques

Storyboard est une classe importante dans le concept d’animations storyboarded. Pour plus d’informations sur le concept, consultez animations storyboarded.

Le storyboard est utilisé pour ces propriétés :

Ces propriétés ne sont pas le seul endroit où un Storyboard est défini. La façon classique d’utiliser un storyboard pour une animation storyboard est que le Storyboard est défini dans une collection Resources ( Application.Resources ou FrameworkElement.Resources, ou éventuellement en tant que ressource au sein d’un fichier tel que Generic.xaml pour un contrôle personnalisé). Chaque fois qu’elle est définie en tant que ressource XAML, vous devez toujours affecter une valeur d’attribut x :Name à votre Storyboard. Vous pouvez ensuite référencer le nom en tant que variable de programmation ultérieurement dans code-behind. Vous aurez besoin de cette référence pour exécuter réellement les animations que contient le Storyboard, en appelant la méthode Begin sur cette instance Storyboard. Storyboard possède également d’autres méthodes de contrôle telles que Stop qui peuvent contrôler l’animation par la suite.

Le storyboard hérite de plusieurs propriétés de Timeline. Ces propriétés peuvent être appliquées à un Storyboard ou à l’une des animations qu’elle contient (dans la collection Children ). Il existe des avantages et des inconvénients pour définir les propriétés de chronologie sur le storyboard principal au lieu de chaque animation. Pour plus d’informations, consultez animations scénarisées.

Vous avez également besoin d’un Storyboard pour contrôler les animations prédéfinies que vous ajoutez aux contrôles ou à l’interface utilisateur, si vous utilisez l’une des animations de thème. Les animations de thème n’ont pas de point de déclencheur inné. Vous devez donc contenir des animations de thème dans un storyboard en tant qu’enfants. Si le Storyboard est utilisé comme valeur VisualState.Storyboard , l’animation s’exécute lorsque cet état visuel est chargé. Ou, s’il se trouve dans visualTransition.Storyboard, l’animation s’exécute quand cette transition est détectée par le gestionnaire d’état visuel. Il s’agit de la façon la plus courante d’utiliser une animation de thème, mais vous pouvez également en placer une dans une ressource Storyboard libre et démarrer explicitement l’animation en appelant Begin.

Propriétés jointes XAML

Storyboard est la classe de service hôte pour plusieurs propriétés jointes XAML. Celles-ci permettent aux animations enfants sous contrôle par le Storyboard à chaque élément cible distincts et aux propriétés cibles, tout en suivant la même chronologie de contrôle et le mécanisme de déclenchement que le parent.

Pour prendre en charge l’accès au processeur XAML aux propriétés jointes, ainsi que pour exposer des opérations d’obtention et de définition équivalentes au code, chaque propriété jointe XAML a une paire de méthodes d’accesseur Get et Set. Une autre façon d’obtenir ou de définir la valeur dans le code consiste à utiliser le système de propriétés de dépendance, en appelant GetValue ou SetValue et en passant le champ d’identificateur comme identificateur de propriété de dépendance.

Propriété jointe Description
TargetName Obtient ou définit le nom de l’objet à animer. Storyboard.TargetName est utilisé pour référencer un autre élément par son nom. L’élément référencé est l’élément/objet où l’animation doit s’appliquer. Ce mécanisme fait partie de la conception de base du système d’animation : il permet aux ressources d’animation d’être déclarées séparément des ressources de déclaration d’interface utilisateur et permet d’appliquer une définition d’animation à plusieurs comportements de propriété différents. Pour la valeur de Storyboard.TargetName sur une animation particulière, vous spécifiez la valeur d’attribut Name ou x :Name de l’élément cible, qui est une chaîne. Cet élément nommé doit déjà exister dans une autre zone de balisage XAML.
La signification des chaînes d’attribut Name/x :Name est contrôlée par un concept xaml namescope. Pour la plupart des scénarios de ciblage d’animation, vous n’avez pas besoin de vous soucier de l’influence des portées de noms XAML, mais vous pouvez rencontrer des problèmes de résolution de noms XAML si vous essayez de cibler des parties de modèle, ou des objets qui ont été créés à l’aide de XamlReader.Load , puis ajoutés à l’arborescence d’objets. Pour plus d'informations, consultez les espaces de noms XAML.
TargetProperty Obtient ou définit la propriété qui doit être animée.Storyboard.TargetProperty cible une propriété particulière de l’élément spécifié par Storyboard.TargetName. La valeur que vous fournissez pour Storyboard.TargetProperty implique un concept appelé chemin de propriété. Pour plus d’informations sur la façon de spécifier un chemin de propriété pour une animation, consultez Remarques dans SetTargetProperty ou Storyboard.TargetProperty, ou la rubrique de syntaxe de chemin d’accès aux propriétés.

Constructeurs

Nom Description
Storyboard()

Initialise une nouvelle instance de la classe Storyboard .

Propriétés

Nom Description
AutoReverse

Obtient ou définit une valeur qui indique si la chronologie est lue à l’inverse une fois qu’elle a terminé une itération vers l’avant.

(Hérité de Timeline)
BeginTime

Obtient ou définit l’heure à laquelle cette chronologie doit commencer.

(Hérité de Timeline)
Children

Obtient la collection d’objets Timeline enfants.

Dispatcher

Retourne null toujours dans une application du Kit de développement logiciel (SDK) d’application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue résultat auquel cet objet est associé. Représente DispatcherQueue une installation qui peut accéder au DependencyObject thread d’interface utilisateur même si le code est initié par un thread non-interface utilisateur.

(Hérité de DependencyObject)
Duration

Obtient ou définit la durée pendant laquelle cette chronologie joue, sans compter les répétitions.

(Hérité de Timeline)
FillBehavior

Obtient ou définit une valeur qui spécifie le comportement de l’animation après qu’elle atteint la fin de sa période active.

(Hérité de Timeline)
RepeatBehavior

Obtient ou définit le comportement répétitif de cette chronologie.

(Hérité de Timeline)
SpeedRatio

Obtient ou définit le taux, par rapport à son parent, au moment où il progresse pour cette chronologie.

(Hérité de Timeline)
TargetNameProperty

Identifie la propriété JOINTE XAML Storyboard.TargetName .

TargetPropertyProperty

Identifie la propriété jointe XAML Storyboard.TargetProperty .

Propriétés attachées

Nom Description
TargetName

Obtient ou définit le nom de l’objet à animer.

TargetProperty

Obtient ou définit la propriété qui doit être animée.

Méthodes

Nom Description
Begin()

Lance l’ensemble d’animations associées au storyboard.

ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété de dépendance.

(Hérité de DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Retourne toute valeur de base établie pour une propriété de dépendance, qui s’applique dans les cas où une animation n’est pas active.

(Hérité de DependencyObject)
GetCurrentState()

Obtient l’état de l’horloge du Storyboard.

GetCurrentTime()

Obtient l’heure de l’horloge d’animation actuelle du Storyboard.

GetTargetName(Timeline)

Obtient la valeur de la propriété XAML Storyboard.TargetName jointe à partir d’un élément cible.

GetTargetProperty(Timeline)

Obtient la valeur de la propriété XAML Storyboard.TargetProperty d’un élément cible.

GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance à partir d’un DependencyObject.

(Hérité de DependencyObject)
Pause()

Suspend l’horloge d’animation associée au storyboard.

ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si une valeur locale est définie.

(Hérité de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Inscrit une fonction de notification pour écouter les modifications apportées à une dependencyProperty spécifique sur cette instance DependencyObject .

(Hérité de DependencyObject)
Resume()

Reprend l’horloge d’animation, ou l’état d’exécution, associé au storyboard.

Seek(TimeSpan)

Déplace le storyboard à la position d’animation spécifiée. Le storyboard effectue la recherche demandée lorsque la graduation de l’horloge suivante se produit.

SeekAlignedToLastTick(TimeSpan)

Déplace le storyboard à la position d’animation spécifiée immédiatement (de façon synchrone).

SetTarget(Timeline, DependencyObject)

Provoque la cible de l’objet spécifié dans la chronologie spécifiée.

SetTargetName(Timeline, String)

Définit la valeur de la propriété XAML Storyboard.TargetName jointe pour un élément cible.

SetTargetProperty(Timeline, String)

Définit la valeur de la propriété XAML Storyboard.TargetProperty pour un élément cible.

SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance sur un DependencyObject.

(Hérité de DependencyObject)
SkipToFill()

Avance l’heure actuelle de l’horloge du storyboard jusqu’à la fin de sa période active.

Stop()

Arrête le storyboard.

UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annule une notification de modification qui a été précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

Événements

Nom Description
Completed

Se produit lorsque l’objet Storyboard a terminé la lecture.

(Hérité de Timeline)

S’applique à

Voir aussi