如何将 ImageBrush 转换为 Color 以便制作动画 Canvas.Background (WPF)

How to convert ImageBrush to Color in order to animate Canvas.Background (WPF)

我正在尝试为我的 canvas 的背景制作动画,使用 ImageBrush(它是代表战斗场景的图像)从已经定义的背景逐渐传递到代表结束的其他 ImageBrush的游戏画面。两张图片都填满了所有 canvas 背景。 是否有允许将 ImageBrush 转换为 Color 的转换器?或者某种 BrushAnimation?

我试过了,但我得到 System.InvalidCastException:'No se puede convertir un objeto de tipo 'System.Windows.Media.ImageBrush' al tipo 'System.Windows.Media.SolidColorBrush'。'

            Brush newColor = miLienzo.Background;
            SolidColorBrush newBrush = (SolidColorBrush)newColor;
            Color myColorFromBrush = newBrush.Color;

            endBrush.ImageSource = new BitmapImage(new Uri("Imagenes/fin.jpg", UriKind.Relative));
            Brush newColor2 = endBrush;
            SolidColorBrush newBrush2 = (SolidColorBrush)newColor2;
            Color myColorFromBrush2 = newBrush2.Color;

            ColorAnimation animation;
            animation = new ColorAnimation();
            animation.From = myColorFromBrush;
            animation.To = myColorFromBrush2;
            animation.Duration = new Duration(TimeSpan.FromSeconds(2));
            miLienzo.Background.BeginAnimation(SolidColorBrush.ColorProperty, animation);

你不能做你想做的事。

将图像放入 canvas 中,并使您想要设置动画的部分透明。

使用 inkscape 将静态部分追踪到几何体中,并使用它来定义您同样放置在 canvas 中的形状。

无论哪种方式,静态部分都是独立的并位于背景之上。

将背景设为纯色画笔。

然后您可以为该纯色画笔中的颜色设置动画。那行得通。

基于形状的方法的一个优点是它还可以有另一个用于填充的纯色画笔(和笔触)。然后你也可以为它的颜色设置动画。

几何图形也相当轻巧,形状是矢量,因此它们可以很好地缩放。

用你的两张图片作为源叠加两张图片。将一个的不透明度从 1.0 降低到 0,将另一个的不透明度从 0 提高到 1.0,使一个淡出另一个淡入。可能与您的想法不完全相同,但看起来很酷。