Exporter (0) Imprimer
Développer tout

SizeAnimation, classe

Mise à jour : novembre 2007

Anime la valeur d'une propriété Size entre deux valeurs cibles à l'aide d'une interpolation linéaire sur un Duration spécifié.

Espace de noms :  System.Windows.Media.Animation
Assembly :  PresentationCore (dans PresentationCore.dll)
XMLNS pour XAML : http://schemas.microsoft.com/winfx/xaml/presentation

public class SizeAnimation : SizeAnimationBase
public class SizeAnimation extends SizeAnimationBase
public class SizeAnimation extends SizeAnimationBase

Une animation met à jour la valeur d'une propriété au cours d'une période donnée. Les conséquences d'une animation peuvent être infimes (déplacement d'un Shape de quelques pixels vers la gauche ou vers la droite, par exemple) ou conséquentes (multiplication de la taille d'un objet par 200 par rapport à sa taille d'origine tout en le faisant pivoter et en modifiant sa couleur, par exemple). Pour créer une animation dans Windows Presentation Foundation (WPF), vous devez associer une animation à la valeur de propriété d'un objet.

Valeurs cibles

La classe SizeAnimation crée une transition entre deux valeurs cibles. Pour définir ses valeurs cibles, utilisez ses propriétés From, To et By.  Les utilisations conjointe ou séparée des propriétés From, To et By pour déterminer les valeurs cibles d'une animation sont récapitulées dans le tableau ci-dessous.

Propriétés spécifiées

Comportement résultant

From

L'animation passe de la valeur définie par la propriété From à la valeur de base de la propriété en cours d'animation ou à la valeur de sortie de l'animation qui la précède en fonction de la configuration de cette dernière.

From et To

L'animation passe de la valeur définie par la propriété From à la valeur définie par la propriété To.

From et By

L'animation passe de la valeur définie par la propriété From à la valeur définie par la somme des propriétés From et By.

To

L'animation passe de la valeur de base de la propriété animée ou de la valeur de sortie de l'animation qui la précède à la valeur définie par la propriété To.

By

L'animation passe de la valeur de base de la propriété en cours d'animation ou de la valeur de sortie de l'animation qui la précède à la somme de cette dernière valeur et de la valeur définie par la propriété By.

Remarque :

Si vous définissez à la fois la propriété To et la propriété By, c'est la propriété To qui est prioritaire et la propriété By est ignorée.

Pour utiliser d'autres méthodes d'interpolation ou effectuer une animation entre plusieurs valeurs cibles, utilisez un objet SizeAnimationUsingKeyFrames.

Pour plus d'informations sur l'application de plusieurs animations à une propriété unique, consultez Vue d'ensemble des animations d'image clé.

Fonctionnalités Freezable

Comme la classe SizeAnimation hérite de Freezable, les objets SizeAnimation disposent de plusieurs fonctionnalités spéciales : ils peuvent notamment être déclarés en tant que ressources, partagés entre plusieurs objets, configurés en lecture seule pour améliorer les performances, clonés ou thread-safe. Pour plus d'informations sur les différentes fonctionnalités proposées par les objets Freezable, consultez Vue d'ensemble des objets Freezable.

Cet exemple montre comment animer la propriété Size d'un ArcSegment.

L'exemple suivant crée un ArcSegment qui anime sa Size lors du chargement à l'écran.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
using System.Windows.Media;

namespace SDKSamples
{
    public class SizeAnimationExample : Page
    {
        public SizeAnimationExample()
        {

            // Create a NameScope for this page so that
            // Storyboards can be used.
            NameScope.SetNameScope(this, new NameScope());

            // Create an ArcSegment to define the geometry of the path.
            // The Size property of this segment is animated.
            ArcSegment myArcSegment = new ArcSegment();
            myArcSegment.Size = new Size(90, 80);
            myArcSegment.SweepDirection = SweepDirection.Clockwise;
            myArcSegment.Point = new Point(500, 200);

            // Assign the segment a name so that
            // it can be targeted by a Storyboard.
            this.RegisterName(
                "myArcSegment", myArcSegment);

            PathSegmentCollection myPathSegmentCollection = new PathSegmentCollection();
            myPathSegmentCollection.Add(myArcSegment);

            // Create a PathFigure to be used for the PathGeometry of myPath.
            PathFigure myPathFigure = new PathFigure();

            // Set the starting point for the PathFigure specifying that the
            // geometry starts at point 100,200.
            myPathFigure.StartPoint = new Point(100, 200);

            myPathFigure.Segments = myPathSegmentCollection;

            PathFigureCollection myPathFigureCollection = new PathFigureCollection();
            myPathFigureCollection.Add(myPathFigure);

            PathGeometry myPathGeometry = new PathGeometry();
            myPathGeometry.Figures = myPathFigureCollection;

            // Create a path to draw a geometry with.
            Path myPath = new Path();
            myPath.Stroke = Brushes.Black;
            myPath.StrokeThickness = 1;

            // specify the shape of the path using the path geometry.
            myPath.Data = myPathGeometry;

            SizeAnimation mySizeAnimation = new SizeAnimation();
            mySizeAnimation.Duration = TimeSpan.FromSeconds(2);

            // Set the animation to repeat forever. 
            mySizeAnimation.RepeatBehavior = RepeatBehavior.Forever;

            // Set the From and To properties of the animation.
            mySizeAnimation.From = new Size(90, 80);
            mySizeAnimation.To = new Size(200, 200);

            // Set the animation to target the Size property
            // of the object named "myArcSegment."
            Storyboard.SetTargetName(mySizeAnimation, "myArcSegment");
            Storyboard.SetTargetProperty(
                mySizeAnimation, new PropertyPath(ArcSegment.SizeProperty));

            // Create a storyboard to apply the animation.
            Storyboard ellipseStoryboard = new Storyboard();
            ellipseStoryboard.Children.Add(mySizeAnimation);

            // Start the storyboard when the Path loads.
            myPath.Loaded += delegate(object sender, RoutedEventArgs e)
            {
                ellipseStoryboard.Begin(this);
            };

            Canvas containerCanvas = new Canvas();
            containerCanvas.Children.Add(myPath);

            Content = containerCanvas;
        }
    }
}


<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Canvas HorizontalAlignment="Left" Margin="0" >

      <!-- Create an arc on the screen that animates its size when it loads. -->
      <Path Stroke="Black" StrokeThickness="2" >
        <Path.Data>
          <PathGeometry>
            <PathGeometry.Figures>
              <PathFigureCollection>
                <PathFigure StartPoint="100,200">
                  <PathFigure.Segments>
                    <PathSegmentCollection>
                      <ArcSegment x:Name="myArcSegment" Size="90,80" 
                      SweepDirection="Clockwise"  Point="500,200" />
                    </PathSegmentCollection>
                  </PathFigure.Segments>
                </PathFigure>
              </PathFigureCollection>
            </PathGeometry.Figures>
          </PathGeometry>
        </Path.Data>
        <Path.Triggers>
          <EventTrigger RoutedEvent="Path.Loaded">
            <BeginStoryboard Name="myBeginStoryBoard">
              <Storyboard>

                <!-- Animate the size of the ArcSegment to a width and height of 200. -->
                <SizeAnimation
                Storyboard.TargetName="myArcSegment"
                Storyboard.TargetProperty="Size"
                From="90,80"
                To="200,200"
                Duration="0:0:2" />

              </Storyboard>
            </BeginStoryboard>
          </EventTrigger>
        </Path.Triggers>
      </Path>
    </Canvas>

</Page>


Pour des exemples de géométrie et d'animation supplémentaires, consultez Géométries, exemple.

Davantage de code

Comment : animer une propriété sans utiliser de table de montage séquentielCet exemple montre une façon d'appliquer une animation à une propriété sans utiliser de Storyboard.
Comment : animer une propriété à l'aide d'une table de montage séquentielCet exemple montre comment utiliser un Storyboard pour animer des propriétés. Pour animer une propriété en utilisant un Storyboard, créez une animation pour chaque propriété que vous souhaitez animer et créez également un Storyboard pour contenir les animations.
Comment : contrôler une animation avec From, To et ByUne animation "From/To/By" ou une "animation de base" crée une transition entre deux valeurs cibles (consultez Vue d'ensemble de l'animation pour une introduction aux différents types d'animations). Pour définir les valeurs cibles d'une animation de base, utilisez ses propriétés From, To et By. Le tableau suivant récapitule la manière dont les propriétés From, To et By peuvent être utilisées pour déterminer les valeurs cibles d'une animation.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft