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);
コード起因Format4bppIndexedに設定PixelFormatプロパティにグラフィックgImageラインで例外をスロー。最終的なビットマップが4ビットに変換できることを示唆した解決策を見ましたが、そのコードは私のために働いたことはありません。
提案がありますか?
各ピクセルのコピー方法のサンプルコードを投稿できますか? –
@Mert - Bitmap.GetPixelとBitmap.SetPixelを使って個々のピクセルを読み書きすることはできますが、これはかなり遅くなる可能性があります。より速い方法は、LockBitsを使用してメモリ内のピクセルデータに直接アクセスすることです。 Bob Powellはこのための優れたリソースです:http://www.bobpowell.net/lockingbits.htm – mbeckish