我正在尝试为画布的背景制作动画,使用ImageBrush(代表战斗场景的图像)从已经定义的背景逐渐传递到代表游戏屏幕结尾的其他ImageBrush。这两个图像都填充了所有画布背景。 是否有允许将ImageBrush投射为Color的转换器?还是某种BrushAnimation?
我已经尝试过了,但是得到了System.InvalidCastException:'没有提示转换'System.Windows.Media.ImageBrush'和转换为'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);
答案 0 :(得分:0)
您无法做您想做的事情。
将图像放置在画布中,并使要制作动画的部分透明。
或
使用inkscape将静态零件跟踪为几何图形,并使用它来定义类似地放置在画布中的形状。
无论哪种方式,静态部分都是分开的,并位于背景的顶部。
使背景成为纯色画笔。
然后可以在该solidcolorbrush中为颜色设置动画。可以的。
基于形状的方法的一个优点是,它还可以使用另一种Solidcolorbrush进行填充(并为此设置笔触)。然后,您也可以为其设置动画。
几何形状也相当轻巧,形状是矢量,因此可以很好地缩放。
或
以两张图片为源叠加两张图片。对不透明度进行动画处理,将其中一个从1.0降低到0,将另一个从0升高到1.0,以淡入淡出,然后将另一个淡入。不完全是您所想的,但是看起来很酷。