按钮背景颜色动画

时间:2018-12-15 19:13:18

标签: c# wpf animation button wpf-controls

我的窗口中大约有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运行动画,而不是全部。有什么解决办法吗?也许我使用了错误的属性来开始制作动画。

1 个答案:

答案 0 :(得分:1)

为每个按钮创建一个新画笔将解决您的问题。您的按钮共享动画的原因是因为class在C#中是Reference Types。是时候绘制按钮了,所有按钮都会注意到动画对它们共享的笔刷中的Color所做的更改。当您给每个画笔分配自己的画笔时,它们的画笔将具有自己的颜色,可以独立进行动画处理。 Memory representation for value and reference types

相关问题