Cette documentation est archivée et n’est pas conservée.

ColorAnimation, classe

Mise à jour : novembre 2007

Anime la valeur d'une propriété Color 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 ColorAnimation : ColorAnimationBase
public class ColorAnimation extends ColorAnimationBase
public class ColorAnimation extends ColorAnimationBase

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), il vous suffit d'associer une animation à la valeur de propriété d'un objet.

Valeurs cibles

La classe ColorAnimation 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 ColorAnimationUsingKeyFrames.

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 ColorAnimation hérite de Freezable, les objets ColorAnimation 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 indique comment animer les Color et Opacity d'un SolidColorBrush.

L'exemple suivant utilise trois animations pour animer les Color et Opacity d'un SolidColorBrush.

  • La première animation, une ColorAnimation, modifie la couleur du pinceau en Gray lorsque la souris entre dans le rectangle.

  • L'animation suivante, une autre ColorAnimation, modifie la couleur du pinceau en Orange lorsque la souris quitte le rectangle.

  • La dernière animation, une DoubleAnimation, modifie l'opacité du pinceau en 0.0 lorsque l'utilisateur clique sur le bouton gauche de la souris.

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

namespace Microsoft.Samples.Animation
{
    /// <summary>
    /// This example shows how to animate the Opacity and Color 
    /// properties of a SolidColorBrush.
    /// </summary>
    public class SolidColorBrushExample : Page
    {

        public SolidColorBrushExample()
        {
            Title = "SolidColorBrush Animation Example";
            Background = Brushes.White;

            // Create a NameScope for the 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;

            // Create a SolidColorBrush to paint
            // the rectangle's fill. The Opacity
            // and Color properties of the brush
            // will be animated.
            SolidColorBrush myAnimatedBrush = new SolidColorBrush();
            myAnimatedBrush.Color = Colors.Orange;
            aRectangle.Fill = myAnimatedBrush;

            // Register the brush's name with the page
            // so that it can be targeted by storyboards.
            this.RegisterName("MyAnimatedBrush", myAnimatedBrush);

            //
            // Animate the brush's color to gray when
            // the mouse enters the rectangle.
            //
            ColorAnimation mouseEnterColorAnimation = new ColorAnimation();
            mouseEnterColorAnimation.To = Colors.Gray;
            mouseEnterColorAnimation.Duration = TimeSpan.FromSeconds(1);
            Storyboard.SetTargetName(mouseEnterColorAnimation, "MyAnimatedBrush");
            Storyboard.SetTargetProperty(
                mouseEnterColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));
            Storyboard mouseEnterStoryboard = new Storyboard();
            mouseEnterStoryboard.Children.Add(mouseEnterColorAnimation);
            aRectangle.MouseEnter += delegate(object sender, MouseEventArgs e)
            {
                mouseEnterStoryboard.Begin(this);
            };

            //
            // Animate the brush's color to orange when
            // the mouse leaves the rectangle.
            //
            ColorAnimation mouseLeaveColorAnimation = new ColorAnimation();
            mouseLeaveColorAnimation.To = Colors.Orange;
            mouseLeaveColorAnimation.Duration = TimeSpan.FromSeconds(1);
            Storyboard.SetTargetName(mouseLeaveColorAnimation, "MyAnimatedBrush");
            Storyboard.SetTargetProperty(
                mouseLeaveColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));
            Storyboard mouseLeaveStoryboard = new Storyboard();
            mouseLeaveStoryboard.Children.Add(mouseLeaveColorAnimation);
            aRectangle.MouseLeave += delegate(object sender, MouseEventArgs e)
            {
                mouseLeaveStoryboard.Begin(this);
            };

            //
            // Animate the brush's opacity to 0 and back when
            // the left mouse button is pressed over the rectangle.
            //
            DoubleAnimation opacityAnimation = new DoubleAnimation();
            opacityAnimation.To = 0.0;
            opacityAnimation.Duration = TimeSpan.FromSeconds(0.5);
            opacityAnimation.AutoReverse = true;
            Storyboard.SetTargetName(opacityAnimation, "MyAnimatedBrush");
            Storyboard.SetTargetProperty(
                opacityAnimation, new PropertyPath(SolidColorBrush.OpacityProperty));
            Storyboard mouseLeftButtonDownStoryboard = new Storyboard();
            mouseLeftButtonDownStoryboard.Children.Add(opacityAnimation);
            aRectangle.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
            {
                mouseLeftButtonDownStoryboard.Begin(this);
            };

            StackPanel mainPanel = new StackPanel();
            mainPanel.Margin = new Thickness(20);
            mainPanel.Children.Add(aRectangle);
            Content = mainPanel;
        }

    }
}


<!-- SolidColorBrushExample.xaml
     This example shows how to animate the Opacity and Color 
     properties of a SolidColorBrush.-->
<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="SolidColorBrush Animation Example"
  Background="White">
  <StackPanel Margin="20">

    <!-- The Opacity and Color of the SolidColorBrush 
         used to fill this rectangle is animated. -->
    <Rectangle Width="100" Height="100">
      <Rectangle.Fill>
        <SolidColorBrush x:Name="MyAnimatedBrush" Color="Orange" />
      </Rectangle.Fill>
      <Rectangle.Triggers>

        <!-- Animates the brush's color to gray
             When the mouse enters the rectangle. -->
        <EventTrigger RoutedEvent="Rectangle.MouseEnter">
          <BeginStoryboard>
            <Storyboard>
              <ColorAnimation
                Storyboard.TargetName="MyAnimatedBrush"
                Storyboard.TargetProperty="Color"
                To="Gray" Duration="0:0:1" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>

        <!-- Animates the brush's color to orange
             when the mouse leaves the rectangle. -->
        <EventTrigger RoutedEvent="Rectangle.MouseLeave">
          <BeginStoryboard>
            <Storyboard>
              <ColorAnimation
                Storyboard.TargetName="MyAnimatedBrush"
                Storyboard.TargetProperty="Color"
                To="Orange" Duration="0:0:1" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>    

        <!-- Animates the brush's opacity when the
             left mouse button is pressed over the rectangle. -->
        <EventTrigger RoutedEvent="Rectangle.MouseLeftButtonDown">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation
                Storyboard.TargetName="MyAnimatedBrush"
                Storyboard.TargetProperty="Opacity"
                To="0.0" Duration="0:0:0.5" AutoReverse="True" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>        
      </Rectangle.Triggers>
    </Rectangle>
  </StackPanel>
</Page>


Pour un exemple plus complet, qui indique comment animer différents types de pinceaux, consultez Pinceaux, exemple. Pour plus d'informations sur l'animation, consultez Vue d'ensemble de l'animation.

Pour des raisons de cohérence avec d'autres exemples d'animation, les versions de code de cet exemple utilisent un objet Storyboard pour appliquer leurs animations. Toutefois, lors de l'application d'une seule animation dans le code, il est plus simple d'utiliser la méthode BeginAnimation qu'un Storyboard. Pour obtenir un exemple, consultez Comment : animer une propriété sans utiliser de table de montage séquentiel.

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
Afficher: