wpf 如何显示webp格式的透明背景图像?

qoefvg9y  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(371)

我想在我的wpf解决方案中显示一个webp格式的图像,我使用了下面的代码。

Image image = new Image();
Binding imageBinding = new() { Source = bytes };
image.SetBinding(Image.SourceProperty, imageBinding);

通过API调用获取图像,这就是为什么我使用字节而不是路径。
问题是,当我运行我的应用程序时,图像有一个黑色的背景。我该如何解决这个问题?

lo8azlld

lo8azlld1#

WPF和WEBP不能很好地配合使用。最好摆脱WEBP,切换到PNG。像使黑色像素透明这样的解决方案很困难,因为a)错误的像素并不总是黑色的,b)图像也可以有"真正的"黑色像素。这些像素也会是透明的。
不过。
1.在某些情况下,WPF和WEBP似乎也可以工作。在WPF中显示图像的示例代码对我帮助最大。在那里,DecodePixelWidth属性用于BitmapImage。WEBP似乎对某些值有效 的解码像素宽度。素数似乎特别适合这里。我用997。它对我来说工作得很好。
1.要使黑色像素透明,您可以使用Bitmap类的MakeTransparent(Color)方法。为了使其工作,您必须首先将BitmapImage转换为位图,然后再转换回来。如何做到这一点,在Converting BitmapImage to Bitmap and vice versa中描述。answer对我帮助最大。

相关问题