Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Animatable.BeginAnimation méthode (DependencyProperty, AnimationTimeline, HandoffBehavior)

 

Date de publication : novembre 2016

Applique une animation au DependencyProperty spécifié. L’animation est démarrée lors de la restitution de l’image suivante. Si la propriété spécifiée est déjà animée, spécifié HandoffBehavior est utilisé.

Espace de noms:   System.Windows.Media.Animation
Assembly:  PresentationCore (dans PresentationCore.dll)

public void BeginAnimation(
	DependencyProperty dp,
	AnimationTimeline animation,
	HandoffBehavior handoffBehavior
)

Paramètres

dp
Type: System.Windows.DependencyProperty

Propriété à animer.

animation
Type: System.Windows.Media.Animation.AnimationTimeline

Animation utilisée pour animer la propriété spécifiée.

Si handoffBehavior est SnapshotAndReplace et de l’animation BeginTime est null, les animations en cours seront supprimées et la valeur actuelle de la propriété conservera.

Si handoffBehavior est SnapshotAndReplace et animation est un null référence, toutes les animations seront supprimées de la propriété et la valeur de propriété reviendra à sa valeur de base.

Si handoffBehavior est Compose, cette méthode n’a aucun effet si l’animation ou son BeginTime est null.

handoffBehavior
Type: System.Windows.Media.Animation.HandoffBehavior

Une valeur qui spécifie comment la nouvelle animation doit interagir avec les animations en cours affectant déjà la valeur de propriété.

Si l’animation a un BeginTime qui est supérieure à zéro, l’animation commence après ce laps de temps écoulé depuis le moment où l’image suivante est rendue.

Lorsque vous appliquez un Storyboard, AnimationTimeline, ou AnimationClock à une propriété à l’aide du Compose HandoffBehavior, tout Clock objets précédemment associés à cette propriété continuent d’utiliser les ressources système ; le système de minuterie supprimera pas ces horloges automatiquement. 

Pour éviter les problèmes de performances lorsque vous appliquez un grand nombre d’horloges à l’aide de Compose, vous devez supprimer la composition des horloges de la propriété animée lorsqu’ils ont terminé. Il existe plusieurs manières de supprimer une horloge.

Il s’agit principalement d’un problème pour les animations sur des objets qui ont une durée de vie longue. Lorsqu’un objet par le garbage collecté, ses horloges sont également déconnectées et récupérées.

Pour plus d’informations sur les objets clock, consultez le Animation and Timing System Overview.

L’exemple suivant montre comment appliquer des animations à l’aide de différents HandoffBehavior paramètres.

/*

   This sample animates the position of an ellipse when 
   the user clicks within the main border. If the user
   left-clicks, the SnapshotAndReplace HandoffBehavior
   is used when applying the animations. If the user
   right-clicks, the Compose HandoffBehavior is used
   instead.

*/

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

namespace Microsoft.Samples.Animation.LocalAnimations
{

    // Create the demonstration.
    public class InteractiveAnimationExample : Page {


        private TranslateTransform interactiveTranslateTransform;   
        private Border containerBorder;
        private Ellipse interactiveEllipse;

        public InteractiveAnimationExample()
        {

            WindowTitle = "Interactive Animation Example";
            DockPanel myPanel = new DockPanel();
            myPanel.Margin = new Thickness(20.0);            

            containerBorder = new Border();
            containerBorder.Background = System.Windows.Media.Brushes.White;
            containerBorder.BorderBrush = System.Windows.Media.Brushes.Black;
            containerBorder.BorderThickness = new Thickness(2.0); 
            containerBorder.VerticalAlignment = VerticalAlignment.Stretch;

            interactiveEllipse = new Ellipse();
            interactiveEllipse.Fill = System.Windows.Media.Brushes.Lime;
            interactiveEllipse.Stroke = System.Windows.Media.Brushes.Black;
            interactiveEllipse.StrokeThickness = 2.0;
            interactiveEllipse.Width = 25;
            interactiveEllipse.Height = 25;
            interactiveEllipse.HorizontalAlignment = HorizontalAlignment.Left;
            interactiveEllipse.VerticalAlignment = VerticalAlignment.Top;

            interactiveTranslateTransform = new TranslateTransform();
            interactiveEllipse.RenderTransform = 
                interactiveTranslateTransform;

            containerBorder.MouseLeftButtonDown += 
                new MouseButtonEventHandler(border_mouseLeftButtonDown);
            containerBorder.MouseRightButtonDown += 
                new MouseButtonEventHandler(border_mouseRightButtonDown);                

            containerBorder.Child = interactiveEllipse;
            myPanel.Children.Add(containerBorder);
            this.Content = myPanel;
        }


        // When the user left-clicks, use the 
        // SnapshotAndReplace HandoffBehavior when applying the animation.        
        private void border_mouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {

            System.Windows.Point clickPoint = Mouse.GetPosition(containerBorder);

            // Set the target point so the center of the ellipse
            // ends up at the clicked point.
            System.Windows.Point targetPoint = new System.Windows.Point();
            targetPoint.X = clickPoint.X - interactiveEllipse.Width / 2;
            targetPoint.Y = clickPoint.Y - interactiveEllipse.Height / 2;  

            // Animate to the target point.
            DoubleAnimation xAnimation = 
                new DoubleAnimation(targetPoint.X, 
                new Duration(TimeSpan.FromSeconds(4)));
            interactiveTranslateTransform.BeginAnimation(
                TranslateTransform.XProperty, xAnimation, HandoffBehavior.SnapshotAndReplace);

            DoubleAnimation yAnimation = 
                new DoubleAnimation(targetPoint.Y, 
                new Duration(TimeSpan.FromSeconds(4))); 
            interactiveTranslateTransform.BeginAnimation(
                TranslateTransform.YProperty, yAnimation, HandoffBehavior.SnapshotAndReplace);                

            // Change the color of the ellipse.
            interactiveEllipse.Fill = System.Windows.Media.Brushes.Lime;

        }

        // When the user right-clicks, use the 
        // Compose HandoffBehavior when applying the animation.
        private void border_mouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {

            // Find the point where the use clicked.
            System.Windows.Point clickPoint = Mouse.GetPosition(containerBorder);

            // Set the target point so the center of the ellipse
            // ends up at the clicked point.
            System.Windows.Point targetPoint = new System.Windows.Point();
            targetPoint.X = clickPoint.X - interactiveEllipse.Width / 2;
            targetPoint.Y = clickPoint.Y - interactiveEllipse.Height / 2;



            // Animate to the target point.
            DoubleAnimation xAnimation = 
                new DoubleAnimation(targetPoint.X, 
                new Duration(TimeSpan.FromSeconds(4)));
            interactiveTranslateTransform.BeginAnimation(
                TranslateTransform.XProperty, xAnimation, HandoffBehavior.Compose);

            DoubleAnimation yAnimation = 
                new DoubleAnimation(targetPoint.Y, 
                new Duration(TimeSpan.FromSeconds(4))); 
            interactiveTranslateTransform.BeginAnimation(
                TranslateTransform.YProperty, yAnimation, HandoffBehavior.Compose);   

            // Change the color of the ellipse.
            interactiveEllipse.Fill = System.Windows.Media.Brushes.Orange;


        }

    }

}

.NET Framework
Disponible depuis 3.0
Retour au début
Afficher: