4

这段代码:

System.Drawing.Bitmap bpp24 = new System.Drawing.Bitmap(3, 3, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Console.WriteLine("bpp24 pixel format is " + bpp24.PixelFormat.ToString());

System.Drawing.Image bpp24image = bpp24;
Console.WriteLine("bpp24image pixel format is " + bpp24image.PixelFormat.ToString());
System.Drawing.Bitmap duplicate = new System.Drawing.Bitmap(bpp24image);
Console.WriteLine("duplicate pixel format is " + duplicate.PixelFormat.ToString());

System.Drawing.Bitmap clone = (System.Drawing.Bitmap)bpp24.Clone();
Console.WriteLine("clone pixel format is " + clone.PixelFormat.ToString());

产生这个输出:

bpp24 像素格式为 Format24bppRgb

bpp24image 像素格式为 Format24bppRgb

重复像素格式为 Format32bppArgb

克隆像素格式为 Format24bppRgb

为什么重复的 PixelFormat 发生了变化?真正复制 Bitmap 的解决方法似乎是最后显示的对象级 Clone 方法(和 Bitmap 级 Clone 方法,但这需要一些额外的输入),但为什么更高级别的 Bitmap(Image) 构造函数不能用于复制位图?

另请参阅Bitmap deep copy changed PixelFormatConverting Bitmap PixelFormats in C#

4

0 回答 0