C# · 12月 28, 2021

c# – 将图像转换为位图会使背景黑色

我需要将图像转换为位图.

最初,gif以字节读取,然后转换为图像.

但是,当我尝试将图像转换为位图时,我的图片框中显示的图形在以前是黑色的背景.

这是代码:

var image = (System.Drawing.Image)value; // Winforms Image we want to get the WPF Image from… var bitmap = new System.Windows.Media.Imaging.BitmapImage(); bitmap.BeginInit(); MemoryStream memoryStream = new MemoryStream(); // Save to a memory stream… image.Save(memoryStream,ImageFormat.Bmp); // Rewind the stream… memoryStream.Seek(0,System.IO.SeekOrigin.Begin); bitmap.StreamSource = memoryStream; bitmap.EndInit(); return bitmap;

有些人可以解释为什么背景会变黑,以及如何阻止这样做.

谢谢

解决方法 不要保存为位图文件.文件格式不支持透明度,因此图像将不会保留透明度.

您可以使用PNG文件格式.这将保持透明度.

如果您真的需要使用位图文件格式,则必须先使其不透明.创建一个具有相同大小的新位图,使用Graphics.FromImage方法获取图形对象来绘制图像,使用Clear方法填充所需的背景颜色,使用DrawImage方法绘制图像顶部的背景,然后保存该位图.