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種類あります。
どれがベストか探すのが大変。