ColorAnimation改变矩形的颜色

本文关键字:颜色 改变 ColorAnimation | 更新日期: 2023-09-27 18:08:31

我想改变矩形的颜色,但是,颜色没有改变。问题在哪里?

ColorAnimation col = new ColorAnimation();
col.From = Colors.Aqua;
col.To = Colors.PaleGreen;
col.Duration = new Duration(TimeSpan.FromSeconds(1));
Storyboard zgo = new Storyboard();
Storyboard.SetTarget(col, c);
Storyboard.SetTargetProperty(col,
           new PropertyPath(SolidColorBrush.ColorProperty));
zgo.Children.Add(col);
zgo.Begin();
这里是XAML:
<Rectangle Name="rec"
    Height="100" Width="200"
    HorizontalAlignment="Left" VerticalAlignment="Top"
    Stroke="Black"
    MouseLeftButtonDown="rec_MouseLeftButtonDown">
    <Rectangle.Fill>
        <SolidColorBrush x:Name="c"></SolidColorBrush>
    </Rectangle.Fill>
</Rectangle>

ColorAnimation改变矩形的颜色

通过调用Animatable.BeginAnimation:

直接运行动画
var colorAnimation = new ColorAnimation(
    Colors.Aqua, Colors.PaleGreen, TimeSpan.FromSeconds(1));
c.BeginAnimation(SolidColorBrush.ColorProperty, colorAnimation);

你仍然可以在Storyboard中使用Rectangle作为动画的目标,并使用Fill.Color作为目标属性::

Storyboard storyboard = new Storyboard();
Storyboard.SetTarget(colorAnimation, rec);
Storyboard.SetTargetProperty(colorAnimation, new PropertyPath("Fill.Color"));
storyboard.Children.Add(colorAnimation);
storyboard.Begin();