첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ SolidColorBrush 클래스의 Color/Opacity 속성에 대한 애니메이션을 만드는 방법을 보여준다.

TestProject.zip
0.01MB

▶ MainWindow.xaml

<Window x:Class="TestProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="800"
    Height="600"
    Title="TestProject"
    FontFamily="나눔고딕코딩"
    FontSize="16">
</Window>

 

▶ MainWindow.xaml.cs

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

namespace TestProject
{
    /// <summary>
    /// 메인 윈도우
    /// </summary>
    public partial class MainWindow : Window
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainWindow()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            Background = Brushes.White;

            NameScope.SetNameScope(this, new NameScope());

            SolidColorBrush solidColorBrush = new SolidColorBrush();

            solidColorBrush.Color = Colors.Orange;

            Rectangle rectangle = new Rectangle();

            rectangle.Width  = 100;
            rectangle.Height = 100;
            rectangle.Fill   = solidColorBrush;

            RegisterName("solidColorBrush", solidColorBrush);

            ColorAnimation mouseEnterColorAnimation = new ColorAnimation();

            mouseEnterColorAnimation.Duration = TimeSpan.FromSeconds(1);
            mouseEnterColorAnimation.To       = Colors.Gray;

            Storyboard.SetTargetName(mouseEnterColorAnimation, "solidColorBrush");
            Storyboard.SetTargetProperty(mouseEnterColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));

            Storyboard mouseEnterStoryboard = new Storyboard();

            mouseEnterStoryboard.Children.Add(mouseEnterColorAnimation);

            rectangle.MouseEnter += delegate(object sender, MouseEventArgs e)
            {
                mouseEnterStoryboard.Begin(this);
            };

            ColorAnimation mouseLeaveColorAnimation = new ColorAnimation();

            mouseLeaveColorAnimation.Duration = TimeSpan.FromSeconds(1);
            mouseLeaveColorAnimation.To       = Colors.Orange;

            Storyboard.SetTargetName(mouseLeaveColorAnimation, "solidColorBrush");
            Storyboard.SetTargetProperty(mouseLeaveColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));

            Storyboard mouseLeaveStoryboard = new Storyboard();

            mouseLeaveStoryboard.Children.Add(mouseLeaveColorAnimation);

            rectangle.MouseLeave += delegate(object sender, MouseEventArgs e)
            {
                mouseLeaveStoryboard.Begin(this);
            };

            DoubleAnimation opacityDoubleAnimation = new DoubleAnimation();

            opacityDoubleAnimation.Duration    = TimeSpan.FromSeconds(0.5);
            opacityDoubleAnimation.To          = 0.0;
            opacityDoubleAnimation.AutoReverse = true;

            Storyboard.SetTargetName(opacityDoubleAnimation, "solidColorBrush");
            Storyboard.SetTargetProperty(opacityDoubleAnimation, new PropertyPath(SolidColorBrush.OpacityProperty));

            Storyboard mouseLeftButtonDownStoryboard = new Storyboard();

            mouseLeftButtonDownStoryboard.Children.Add(opacityDoubleAnimation);

            rectangle.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
            {
                mouseLeftButtonDownStoryboard.Begin(this);
            };

            Content = rectangle;
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요