2011-01-10 77 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