728x90
반응형
728x170
■ GradientStop 클래스의 Color/Offset 속성에 대한 애니메이션을 만드는 방법을 보여준다.
▶ 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()
{
NameScope.SetNameScope(this, new NameScope());
GradientStop gradientStop1 = new GradientStop(Colors.MediumBlue, 0.0);
GradientStop gradientStop2 = new GradientStop(Colors.Purple , 0.5);
GradientStop gradientStop3 = new GradientStop(Colors.Red , 1.0);
LinearGradientBrush linearGradientBrush = new LinearGradientBrush();
linearGradientBrush.GradientStops.Add(gradientStop1);
linearGradientBrush.GradientStops.Add(gradientStop2);
linearGradientBrush.GradientStops.Add(gradientStop3);
RegisterName("gradientStop1", gradientStop1);
RegisterName("gradientStop2", gradientStop2);
RegisterName("gradientStop3", gradientStop3);
Rectangle rectangle = new Rectangle();
rectangle.Width = 200;
rectangle.Height = 100;
rectangle.StrokeThickness = 1;
rectangle.Stroke = Brushes.Black;
rectangle.Fill = linearGradientBrush;
DoubleAnimation offsetDoubleAnimation = new DoubleAnimation();
offsetDoubleAnimation.Duration = TimeSpan.FromSeconds(1.5);
offsetDoubleAnimation.From = 0.0;
offsetDoubleAnimation.To = 1.0;
offsetDoubleAnimation.AutoReverse = true;
Storyboard.SetTargetName(offsetDoubleAnimation, "gradientStop1");
Storyboard.SetTargetProperty(offsetDoubleAnimation, new PropertyPath(GradientStop.OffsetProperty));
ColorAnimation gradientStopColorAnimation = new ColorAnimation();
gradientStopColorAnimation.Duration = TimeSpan.FromSeconds(1.5);
gradientStopColorAnimation.BeginTime = TimeSpan.FromSeconds(3);
gradientStopColorAnimation.From = Colors.Purple;
gradientStopColorAnimation.To = Colors.Yellow;
gradientStopColorAnimation.AutoReverse = true;
Storyboard.SetTargetName(gradientStopColorAnimation, "gradientStop2");
Storyboard.SetTargetProperty(gradientStopColorAnimation, new PropertyPath(GradientStop.ColorProperty));
ColorAnimation opacityColorAnimation = new ColorAnimation();
opacityColorAnimation.Duration = TimeSpan.FromSeconds(1.5);
opacityColorAnimation.BeginTime = TimeSpan.FromSeconds(6);
opacityColorAnimation.By = Color.FromScRgb(-1.0f, 0f, 0f, 0f);
opacityColorAnimation.AutoReverse = true;
Storyboard.SetTargetName(opacityColorAnimation, "gradientStop3");
Storyboard.SetTargetProperty(opacityColorAnimation, new PropertyPath(GradientStop.ColorProperty));
Storyboard gradientStopAnimationStoryboard = new Storyboard();
gradientStopAnimationStoryboard.Children.Add(offsetDoubleAnimation );
gradientStopAnimationStoryboard.Children.Add(gradientStopColorAnimation);
gradientStopAnimationStoryboard.Children.Add(opacityColorAnimation );
rectangle.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
{
gradientStopAnimationStoryboard.Begin(this);
};
Content = rectangle;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] ImageBrush 엘리먼트 : ViewportUnits/Viewport/TileMode 속성을 사용해 타일 크기 설정하기 (0) | 2023.03.21 |
---|---|
[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] SolidColorBrush 클래스 : Color/Opacity 속성 애니메이션 설정하기 (0) | 2023.03.18 |
[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 |
댓글을 달아 주세요