2011-01-10 81 views
2

我想在C#中创建一个4位的PNG文件,但我的代码不起作用。如何使用C#创建4位PNG?

下面是代码:

Bitmap bmp = new Bitmap(200, 50, PixelFormat.Format4bppIndexed); 
string f = bmp.PixelFormat.ToString(); 
Graphics gImage = Graphics.FromImage(bmp); 
gImage.FillRectangle(Brushes.Red, 0, 0, bmp.Width - 20, bmp.Height - 20); 
gImage.DrawRectangle(Pens.White, 0, 0, bmp.Width - 20, bmp.Height - 20); 
gImage.DrawString("Test", SystemFonts.DefaultFont, Brushes.White, 5, 8); 
bmp.Save("C:\\buttons_normal1.png",ImageFormat.Png); 

的代码抛出在图形gImage线异常因的PixelFormat设置为Format4bppIndexed。我在这里看到了一个解决方案,提示最终的位图可以转换为4位,但该代码从未为我工作。

有什么建议吗?

回答

1

问题是您不允许使用索引像素格式创建图形对象。

一个解决方案是创建一个不同格式的图形对象来绘制图像,并以PixelFormat.Format4bppIndexed格式创建一个空的位图,并将每个像素从一个图像复制到另一个图像。

+0

你可以请发表样本代码如何复制每个像素? – 2011-01-11 08:44:39