Animatable.BeginAnimation Yöntem

Tanım

Belirtilen DependencyPropertybir animasyon uygular.

Aşırı Yüklemeler

BeginAnimation(DependencyProperty, AnimationTimeline)

Belirtilen DependencyPropertybir animasyon uygular. Animasyon, sonraki çerçeve işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, SnapshotAndReplace iletim davranışı kullanılır.

BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Belirtilen DependencyPropertybir animasyon uygular. Animasyon, sonraki çerçeve işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, belirtilen HandoffBehavior kullanılır.

BeginAnimation(DependencyProperty, AnimationTimeline)

Belirtilen DependencyPropertybir animasyon uygular. Animasyon, sonraki çerçeve işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, SnapshotAndReplace iletim davranışı kullanılır.

C#
public void BeginAnimation (System.Windows.DependencyProperty dp, System.Windows.Media.Animation.AnimationTimeline animation);

Parametreler

dp
DependencyProperty

Animasyon eklemek için özellik.

animation
AnimationTimeline

Belirtilen özelliğe animasyon eklemek için kullanılan animasyon.

Animasyonun BeginTimenullise, geçerli animasyonlar kaldırılır ve özelliğin geçerli değeri tutulur.

animation nullise, tüm animasyonlar özelliğinden kaldırılır ve özellik değeri temel değerine geri döner.

Uygulamalar

Açıklamalar

Animasyonda sıfırdan büyük bir BeginTime varsa, animasyon bir sonraki karenin işlendiği zamandan bu süre geçtikten sonra başlar.

Şunlara uygulanır

.NET Framework 4.8.1 ve diğer sürümler
Ürün Sürümler
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Belirtilen DependencyPropertybir animasyon uygular. Animasyon, sonraki çerçeve işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, belirtilen HandoffBehavior kullanılır.

C#
public void BeginAnimation (System.Windows.DependencyProperty dp, System.Windows.Media.Animation.AnimationTimeline animation, System.Windows.Media.Animation.HandoffBehavior handoffBehavior);

Parametreler

dp
DependencyProperty

Animasyon eklemek için özellik.

animation
AnimationTimeline

Belirtilen özelliğe animasyon eklemek için kullanılan animasyon.

handoffBehavior SnapshotAndReplace ve animasyonun BeginTimenullise, geçerli animasyonlar kaldırılır ve özelliğin geçerli değeri tutulur.

handoffBehavior SnapshotAndReplace ve animation bir null başvurusuysa, tüm animasyonlar özelliğinden kaldırılır ve özellik değeri temel değerine geri döner.

handoffBehavior Composeise, animasyon veya BeginTimenullbu yöntemin hiçbir etkisi olmaz.

handoffBehavior
HandoffBehavior

Yeni animasyonların özellik değerini zaten etkileyen geçerli animasyonlarla nasıl etkileşim kuracaklarını belirten bir değer.

Uygulamalar

Örnekler

Aşağıdaki örnekte, farklı HandoffBehavior ayarları kullanılarak animasyonların nasıl uygulanacağı gösterilmektedir.

C#
/*

   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;
        }
    }
}

Açıklamalar

Animasyonda sıfırdan büyük bir BeginTime varsa, animasyon bir sonraki karenin işlendiği zamandan bu süre geçtikten sonra başlar.

Compose HandoffBehavior Kullanma

Compose HandoffBehaviorkullanarak bir özelliğe Storyboard, AnimationTimelineveya AnimationClock uyguladığınızda, daha önce bu özellikle ilişkilendirilmiş tüm Clock nesneleri sistem kaynaklarını kullanmaya devam eder; zamanlama sistemi bu saatleri otomatik olarak kaldırmaz.

Composekullanarak çok sayıda saat uyguladığınızda performans sorunlarını önlemek için, oluşturma saatlerini tamamlandıktan sonra animasyonlu özellikten kaldırmanız gerekir. Bir saati kaldırmanın çeşitli yolları vardır.

Bu öncelikle yaşam süresi uzun olan nesnelerdeki animasyonlar için bir sorundur. Bir nesne çöp toplandığında, saatleri de kesilir ve çöp toplanır.

Saat nesneleri hakkında daha fazla bilgi için bkz. Animasyon ve Zamanlama Sistemine Genel Bakış.

Şunlara uygulanır

.NET Framework 4.8.1 ve diğer sürümler
Ürün Sürümler
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9