C# Bitmapクラス

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
雨ガエル
記事: 34
登録日時: 13年前
住所: 新潟
連絡を取る:

C# Bitmapクラス

#1

投稿記事 by 雨ガエル » 12年前

Bitmapクラスをnew Bitmap(/*サイズ*/)で実体化したとき、
何も描かれていない透明なBitmapができると思うのですが、
そこに何か描画して、元の透明な状態に戻すにはどうしたらいいでしょうか。

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

よろしくお願いします。

YuO
記事: 947
登録日時: 14年前
住所: 東京都世田谷区

Re: C# Bitmapクラス

#2

投稿記事 by YuO » 12年前

一応,サイズ指定で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のポインタ操作で処理した方が早いかもしれませんが……。

アバター
雨ガエル
記事: 34
登録日時: 13年前
住所: 新潟
連絡を取る:

Re: C# Bitmapクラス

#3

投稿記事 by 雨ガエル » 12年前

別の方法を探そうと思います。
すみませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る