HOW TO:使用 AnimationClock 建立屬性的動畫
更新:2007 年 11 月
本範例顯示如何使用 Clock 物件建立屬性的動畫。
有三種方式可以建立相依性屬性的動畫:
建立 AnimationTimeline,並使用 Storyboard 讓其與該屬性建立關聯。
使用物件的 BeginAnimation 方法以套用單一 AnimationTimeline 至目標屬性。
從 AnimationTimeline 建立 AnimationClock,並套用至屬性。
Storyboard 物件和 BeginAnimation 方法可以讓您建立屬性的動畫,不需直接建立和散發時鐘 (如需範例,請參閱 HOW TO:使用腳本建立屬性的動畫和 HOW TO:不使用腳本而建立屬性的動畫)。時鐘會自動建立和散發。
範例
下列範例顯示如何建立 AnimationClock 並將其套用至兩個類似的屬性。
/*
This example shows how to create and apply
an AnimationClock.
*/
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
namespace Microsoft.Samples.Animation.TimingBehaviors
{
public class AnimationClockExample : Page
{
ScaleTransform myScaleTransform;
public AnimationClockExample()
{
this.WindowTitle = "Opacity Animation Example";
this.Background = Brushes.White;
StackPanel myStackPanel = new StackPanel();
myStackPanel.Margin = new Thickness(20);
// Create a button that with a ScaleTransform.
// The ScaleTransform will animate when the
// button is clicked.
Button myButton = new Button();
myButton.Margin = new Thickness(50);
myButton.HorizontalAlignment = HorizontalAlignment.Left;
myButton.Content = "Click Me";
myScaleTransform = new ScaleTransform(1,1);
myButton.RenderTransform = myScaleTransform;
// Associate an event handler with the
// button's Click event.
myButton.Click += new RoutedEventHandler(myButton_Clicked);
myStackPanel.Children.Add(myButton);
this.Content = myStackPanel;
}
// Create and apply and animation when the button is clicked.
private void myButton_Clicked(object sender, RoutedEventArgs e)
{
// Create a DoubleAnimation to animate the
// ScaleTransform.
DoubleAnimation myAnimation =
new DoubleAnimation(
1, // "From" value
5, // "To" value
new Duration(TimeSpan.FromSeconds(5))
);
myAnimation.AutoReverse = true;
// Create a clock the for the animation.
AnimationClock myClock = myAnimation.CreateClock();
// Associate the clock the ScaleX and
// ScaleY properties of the button's
// ScaleTransform.
myScaleTransform.ApplyAnimationClock(
ScaleTransform.ScaleXProperty, myClock);
myScaleTransform.ApplyAnimationClock(
ScaleTransform.ScaleYProperty, myClock);
}
}
}
如需顯示如何在啟動 Clock 後以互動方式控制時鐘的範例,請參閱 HOW TO:以互動方式控制時鐘。