按钮背景颜色动画
Button Background Color Animate
我的 window 中有大约 30 个按钮,我想在一些过程后更改其中一个按钮的背景颜色。
这是我的代码:
private void Button_Click(object sender, RoutedEventArgs e){
.
. //A Dialog Shows Up And Do Some Processes
.
Button b = (Button)sender;
ColorAnimation ca = new ColorAnimation();
ca.From = ((SolidColorBrush)b.Background).Color;
ca.To = Color.FromArgb(255, 132, 27, 13);
ca.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
ca.EasingFunction = new QuadraticEase();
b.Background.BeginAnimation(SolidColorBrush.ColorProperty, ca);
}
我的一些按钮附在这个事件上。当此方法运行并执行操作时,所有与 sender
颜色相同的按钮开始动画,但我只想 sender
运行动画,而不是全部。有什么解决办法吗?也许我使用了错误的 属性 来开始动画。
为每个按钮创建一个新画笔将解决您的问题。您的按钮共享动画的原因是因为 class
es 在 C# 中是 Reference Types。当需要绘制按钮时,所有按钮都会注意到动画对它们共享的画笔内的 Color
所做的更改。当你给每个人自己的画笔时,他们的画笔将有自己的颜色,可以独立动画。
我的 window 中有大约 30 个按钮,我想在一些过程后更改其中一个按钮的背景颜色。
这是我的代码:
private void Button_Click(object sender, RoutedEventArgs e){
.
. //A Dialog Shows Up And Do Some Processes
.
Button b = (Button)sender;
ColorAnimation ca = new ColorAnimation();
ca.From = ((SolidColorBrush)b.Background).Color;
ca.To = Color.FromArgb(255, 132, 27, 13);
ca.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
ca.EasingFunction = new QuadraticEase();
b.Background.BeginAnimation(SolidColorBrush.ColorProperty, ca);
}
我的一些按钮附在这个事件上。当此方法运行并执行操作时,所有与 sender
颜色相同的按钮开始动画,但我只想 sender
运行动画,而不是全部。有什么解决办法吗?也许我使用了错误的 属性 来开始动画。
为每个按钮创建一个新画笔将解决您的问题。您的按钮共享动画的原因是因为 class
es 在 C# 中是 Reference Types。当需要绘制按钮时,所有按钮都会注意到动画对它们共享的画笔内的 Color
所做的更改。当你给每个人自己的画笔时,他们的画笔将有自己的颜色,可以独立动画。