ページ 11

C# Bitmapクラス

Posted: 2012年10月28日(日) 16:26
by 雨ガエル
Bitmapクラスをnew Bitmap(/*サイズ*/)で実体化したとき、
何も描かれていない透明なBitmapができると思うのですが、
そこに何か描画して、元の透明な状態に戻すにはどうしたらいいでしょうか。

透明な色で作成したBitmapを塗りつぶせばよさそうですが、やりかたがわかりません。

よろしくお願いします。

Re: C# Bitmapクラス

Posted: 2012年10月29日(月) 00:58
by YuO
一応,サイズ指定でBitmapを生成した時の色は,明文化されていなかったりします。
さらに,参照コードを経由してGDI+のBitmap.Bitmap(INT, INT, INT, PixelFormat, BYTE*) constructorに辿り着いてもscan0にnullを渡した場合について記載が無かったりします。

それはともかく,元はnew Color()を全ピクセルに設定したものと考えられるので,
Graphics.FromImageで得たGraphicsを,FillRectangleで透明色で塗りつぶせば良いです。
こんな感じで。

コード:

using (var g = Graphics.FromImage(bitmap))
using (var brush = new SolidBrush(new Color()))
{
    g.FillRectangle(brush, 0, 0, bitmap.Width, bitmap.Height);
}
Bitmap.LockBitsしたデータをunsafeのポインタ操作で処理した方が早いかもしれませんが……。

Re: C# Bitmapクラス

Posted: 2012年11月03日(土) 14:35
by 雨ガエル
別の方法を探そうと思います。
すみませんでした。