何も描いていないBitmapを保存したら、真っ黒の画像になってしまう。

解決


雄山  2009-06-20 07:11:18  No: 142091

VB2008で、画像の作成の勉強をしています。
さて、以下のように、空のBitmapを作成し、gif形式で保存し、またPictureBoxにこれを表示してみました。

Dim bmp As New Bitmap(300, 300)
bmp.Save((保存するgifファイル名), System.Drawing.Imaging.ImageFormat.Gif)
PictureBox1.Image = bmp

すると、PictureBoxに描画は透明のような感じで変化はないのですが、
作成されたgifファイルは真っ黒の画像として保存されていました。
gifではなくbmp形式で保存しても真っ黒の画像が作成されます。

こちらがやりたいのは、白地の画像に絵を描いてgifで保存したいのですが、
このままでは背景色が黒になってしまいます。
背景色を白地にするにはどうしたらよいでしょうか?
よろしくお願いします。


Hongliang  2009-06-20 08:35:41  No: 142092

特に指定しない場合、生成された Bitmap オブジェクトは 32bpp の ARGB カラーの画像を扱い、全てのピクセルが透明色(A=0, R=0, G=0, B=0)になっています。
PictureBox に表示させたときに白になるのはウィンドウの色が透過しているからで、画像自体は透明です。
特定の色で塗りつぶしたいなら、Graphics.FromImage で作成した Graphics の Clear メソッドを使用できます。
保存したものを読み込んだときに真っ黒になるのは、GDI+ の GIF エンコーダの仕様です。GIF で保存する場合、透過色は無視されます。
また bmp ファイル形式は透過色をサポートしません。
透過色を保存したい場合、PNG 形式を使用するべきです。


雄山  2009-06-20 15:02:50  No: 142093

Hongliangさん、ありがとうございました。
GraphicsのClear(Color.White)メソッドで、背景を白色にして保存して、うまくいきました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加