728x90
반응형
728x170
■ SolidColorBrush 클래스의 Color/Opacity 속성에 대한 애니메이션을 만드는 방법을 보여준다.
▶ 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
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] ImageBrush 엘리먼트 : TextBlock 객체에서 이미지 그리기 (0) | 2023.03.21 |
---|---|
[C#/WPF] ImageBrush 엘리먼트 : Stretch 속성 사용하기 (0) | 2023.03.21 |
[C#/WPF] ImageBrush 엘리먼트 사용하기 (0) | 2023.03.21 |
[C#/WPF] ImageBrush 엘리먼트 : AlignmentX/AlignmentY 속성을 사용해 이미지 정렬하기 (0) | 2023.03.21 |
[C#/WPF] GradientStop 클래스 : Color/Offset 속성 애니메이션 설정하기 (0) | 2023.03.20 |
[C#/WPF] RadioButton 엘리먼트 : 글래스 효과 라디오 버튼 만들기 (0) | 2023.03.18 |
[C#/WPF] DrawingBrush 엘리먼트 : 드로잉 브러시 애니메이션 만들기 (0) | 2023.03.18 |
[C#/WPF] ImageDrawing 엘리먼트 사용하기 (0) | 2023.03.18 |
[C#/WPF] DrawingBrush 엘리먼트 : Transform/RelativeTransform 속성 사용하기 (0) | 2023.03.18 |
[C#/WPF] DrawingBrush 엘리먼트 사용하기 (0) | 2023.03.17 |
댓글을 달아 주세요