방법: 키 프레임을 사용하여 부울에 애니메이션 효과 주기
업데이트: 2007년 11월
이 예제에서는 키 프레임을 사용하여 Button 컨트롤의 부울 속성 값에 애니메이션 효과를 주는 방법을 보여 줍니다.
예제
다음 예제에서는 BooleanAnimationUsingKeyFrames 클래스를 사용하여 Button 컨트롤의 IsEnabled 속성에 애니메이션 효과를 줍니다. 이 예제에 나오는 모든 키 프레임에는 DiscreteBooleanKeyFrame 클래스 인스턴스가 사용됩니다. DiscreteBooleanKeyFrame과 같은 불연속 키 프레임에서는 값 간에 급격한 점프 효과를 만듭니다. 즉, 애니메이션이 급격하게 움직입니다.
// Demonstrates a BooleanAnimationUsingKeyFrames. The animation is used to
// animate the IsEnabled property of a button.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media.Animation;
using System.Windows.Media;
namespace Microsoft.Samples.KeyFrameExamples
{
public class BooleanAnimationUsingKeyFramesExample : Page
{
public BooleanAnimationUsingKeyFramesExample()
{
Title = "BooleanAnimationUsingKeyFrames Example";
Background = Brushes.White;
Margin = new Thickness(20);
// Create a NameScope for this page so that
// Storyboards can be used.
NameScope.SetNameScope(this, new NameScope());
StackPanel myStackPanel = new StackPanel();
myStackPanel.Orientation = Orientation.Vertical;
myStackPanel.Margin = new Thickness(20);
// Create a TextBlock to introduce the example.
TextBlock myTextBlock = new TextBlock();
myTextBlock.Text = "Click the button to animate its IsEnabled property"
+ " with aBooleanAnimationUsingKeyFrames animation.";
myStackPanel.Children.Add(myTextBlock);
// Create the Button that is the target of the animation.
Button myButton = new Button();
myButton.Margin = new Thickness(200);
myButton.Content = "Click Me";
myStackPanel.Children.Add(myButton);
// Assign the Button a name so that
// it can be targeted by a Storyboard.
this.RegisterName(
"AnimatedButton", myButton);
// Create a BooleanAnimationUsingKeyFrames to
// animate the IsEnabled property of the Button.
BooleanAnimationUsingKeyFrames booleanAnimation
= new BooleanAnimationUsingKeyFrames();
booleanAnimation.Duration = TimeSpan.FromSeconds(4);
// All the key frames defined below are DiscreteBooleanKeyFrames.
// Discrete key frames create sudden "jumps" between values
// (no interpolation). Only discrete key frames can be used
// for Boolean key frame animations.
// Value at the beginning is false
booleanAnimation.KeyFrames.Add(
new DiscreteBooleanKeyFrame(
false, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.0))) // KeyTime
);
// Value becomes true after the first second.
booleanAnimation.KeyFrames.Add(
new DiscreteBooleanKeyFrame(
true, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(1.0))) // KeyTime
);
// Value becomes false after the 2nd second.
booleanAnimation.KeyFrames.Add(
new DiscreteBooleanKeyFrame(
false, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(2.0))) // KeyTime
);
// Value becomes true after the third second.
booleanAnimation.KeyFrames.Add(
new DiscreteBooleanKeyFrame(
true, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(3.0))) // KeyTime
);
// Value becomes false after 3 and half seconds.
booleanAnimation.KeyFrames.Add(
new DiscreteBooleanKeyFrame(
false, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(3.5))) // KeyTime
);
// Value becomes true after the fourth second.
booleanAnimation.KeyFrames.Add(
new DiscreteBooleanKeyFrame(
true, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(4.0))) // KeyTime
);
// Set the animation to target the IsEnabled property
// of the object named "AnimatedButton".
Storyboard.SetTargetName(booleanAnimation, "AnimatedButton");
Storyboard.SetTargetProperty(
booleanAnimation, new PropertyPath(Button.IsEnabledProperty));
// Create a storyboard to apply the animation.
Storyboard myStoryboard = new Storyboard();
myStoryboard.Children.Add(booleanAnimation);
// Start the storyboard when the button is clicked.
myButton.Click += delegate(object sender, RoutedEventArgs e)
{
myStoryboard.Begin(this);
};
Content = myStackPanel;
}
}
}
<!-- Demonstrates a BooleanAnimationUsingKeyFrames. The animation is used to
animate the IsEnabled property of a button. -->
<Page
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="KeyFrameBoolean Animation Example">
<StackPanel Orientation="Vertical" Margin="20">
<TextBlock>
Click the button to animate its IsEnabled property with a
BooleanAnimationUsingKeyFrames animation.
</TextBlock>
<Button Name="myAnimatedButton" Margin="200">Click Me
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames
Storyboard.TargetName="myAnimatedButton"
Storyboard.TargetProperty="IsEnabled"
Duration="0:0:4" FillBehavior="HoldEnd">
<!-- All the key frames below are DiscreteBooleanKeyFrames. Discrete key frames create
sudden "jumps" between values (no interpolation). Only discrete key frames can be used
for Boolean key frame animations. -->
<DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:0" />
<DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:1" />
<DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:2" />
<DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:3" />
<DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:3.5" />
<DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:4" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
</Page>
전체 샘플을 보려면 KeyFrame 애니메이션 샘플을 참조하십시오.
참고 항목
작업
개념
참조
BooleanAnimationUsingKeyFrames