다음을 통해 공유


방법: Storyboard를 사용하지 않고 속성에 애니메이션 효과 주기

업데이트: 2007년 11월

이 예제에서는 Storyboard를 사용하지 않고 속성에 애니메이션 효과를 적용하는 한 가지 방법을 보여 줍니다.

참고

XAML(Extensible Application Markup Language)에서는 이 기능을 사용할 수 없습니다. XAML에서 속성에 애니메이션 효과를 주는 방법에 대한 자세한 내용은 방법: Storyboard를 사용하여 속성에 애니메이션 효과 주기를 참조하십시오.

속성에 로컬 애니메이션을 적용하려면 BeginAnimation 메서드를 사용합니다. 이 메서드에는 애니메이션 효과를 줄 속성과 해당 속성에 적용할 애니메이션을 지정하는 두 개의 매개 변수 DependencyProperty를 사용합니다.

예제

다음 예제에서는 Button의 너비와 배경색에 애니메이션 효과를 주는 방법을 보여 줍니다.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''This sample demonstrates how to apply non-storyboard animations to a property.
'''To animate in markup, you must use storyboards.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Imports System
Imports System.Windows
Imports System.Windows.Navigation
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Imports System.Windows.Controls

Namespace Microsoft.Samples.Animation.LocalAnimations

    ' Create the demonstration.
    Public Class LocalAnimationExample
        Inherits Page

        Public Sub New()

            WindowTitle = "Animate Property Example"
            Dim myStackPanel As New StackPanel()
            myStackPanel.Margin = New Thickness(20)

            ' Create and set the Button.
            Dim aButton As New Button()
            aButton.Content = "A Button"

            ' Animate the Button's Width.
            Dim myDoubleAnimation As New DoubleAnimation()
            myDoubleAnimation.From = 75
            myDoubleAnimation.To = 300
            myDoubleAnimation.Duration = New Duration(TimeSpan.FromSeconds(5))
            myDoubleAnimation.AutoReverse = True
            myDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever

            ' Apply the animation to the button's Width property.
            aButton.BeginAnimation(Button.WidthProperty, myDoubleAnimation)

            ' Create and animate a Brush to set the button's Background.
            Dim myBrush As New SolidColorBrush()
            myBrush.Color = Colors.Blue

            Dim myColorAnimation As New ColorAnimation()
            myColorAnimation.From = Colors.Blue
            myColorAnimation.To = Colors.Red
            myColorAnimation.Duration = New Duration(TimeSpan.FromMilliseconds(7000))
            myColorAnimation.AutoReverse = True
            myColorAnimation.RepeatBehavior = RepeatBehavior.Forever

            ' Apply the animation to the brush's Color property.
            myBrush.BeginAnimation(SolidColorBrush.ColorProperty, myColorAnimation)
            aButton.Background = myBrush

            ' Add the Button to the panel.
            myStackPanel.Children.Add(aButton)
            Me.Content = myStackPanel
        End Sub
    End Class
End Namespace
/*

   This sample demonstrates how to apply non-storyboard animations to a property.
   To animate in markup, you must use storyboards.

*/

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;

namespace Microsoft.Samples.Animation.LocalAnimations
{

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




        public LocalAnimationExample()
        {


            WindowTitle = "Local Animation Example";
            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Margin = new Thickness(20);                     


            // Create and set the Button.
            Button aButton = new Button();
            aButton.Content = "A Button";

            // Animate the Button's Width.
            DoubleAnimation myDoubleAnimation = new DoubleAnimation();
            myDoubleAnimation.From = 75;
            myDoubleAnimation.To = 300;
            myDoubleAnimation.Duration =  new Duration(TimeSpan.FromSeconds(5));
            myDoubleAnimation.AutoReverse = true;
            myDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;

            // Apply the animation to the button's Width property.
            aButton.BeginAnimation(Button.WidthProperty, myDoubleAnimation);       

            // Create and animate a Brush to set the button's Background.
            SolidColorBrush myBrush = new SolidColorBrush();
            myBrush.Color = Colors.Blue;            

            ColorAnimation myColorAnimation = new ColorAnimation();
            myColorAnimation.From = Colors.Blue;
            myColorAnimation.To = Colors.Red;
            myColorAnimation.Duration =  new Duration(TimeSpan.FromMilliseconds(7000));
            myColorAnimation.AutoReverse = true;
            myColorAnimation.RepeatBehavior = RepeatBehavior.Forever;

            // Apply the animation to the brush's Color property.
            myBrush.BeginAnimation(SolidColorBrush.ColorProperty, myColorAnimation);           
            aButton.Background = myBrush;

            // Add the Button to the panel.
            myStackPanel.Children.Add(aButton);
            this.Content = myStackPanel;
        }
    }

}

전체 샘플을 보려면 로컬 애니메이션 샘플을 참조하십시오.

System.Windows.Media.Animation 네임스페이스에는 여러 형식의 속성에 애니메이션 효과를 주기 위한 다양한 애니메이션 클래스가 있습니다. 속성에 애니메이션 효과를 주는 방법에 대한 자세한 내용은 애니메이션 개요를 참조하십시오. 종속성 속성(이 예제에 사용되는 속성의 형식) 및 그 기능에 대한 자세한 내용은 종속성 속성 개요를 참조하십시오.

Storyboard 개체를 사용하지 않고 애니메이션 효과를 주는 다른 방법도 있습니다. 이에 대한 자세한 내용은 속성 애니메이션 기술 개요를 참조하십시오.

참고 항목

작업

로컬 애니메이션 샘플

개념

속성 애니메이션 기술 개요

애니메이션 개요

참조

AnimationTimeline

BeginAnimation

System.Windows.Media.Animation

Storyboard