BitBltなしで画像透過転送
画像を重ねて描画したときに、背景色で塗りつぶされたくない場合、Windows APIにあるBitBltを使うのが一般的です。
.NET環境でもやろうと思えば可能ですが、画像の透過コピーは、以下の手順でやればBitBltを呼ぶ必要がありません。
以下は、ピクチャーボックスのImageに描画情報を保持させる場合の例
Bitmap bmp = なんかの画像 PictureBox pbxMap = ピクチャーボックス Graphics g = Graphics.FromImage(pbxMap.Image); ImageAttributes attr = new ImageAttributes(); attr.SetColorKey(Color.White,Color.White); // 透過させたい色の範囲を指定(ここでは白のみ) int xp = X座標の表示させたい位置 int yp = Y座標の表示させたい位置 // ビットマップを描画する Rectangle rect = new Rectangle(xp, yp, bmp.Width, bmp.Height); g.DrawImage(bmp, rect, 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, attr); pbxMap.Invalidate(rect); g.Dispose(); attr.Dispose();
ImageAttributesに透過させたい色の範囲を指定してください。
上の例は画像の白色部分を透過させます。
Graphics.DrawImageは引数のパターンが30種類あります。
どれがベストか探すのが大変。