• ベストアンサー

vb.net 画像の透過について

背面画像Aと前面画像Bがあります。 画像Bは画像A上をファイルから読み込んだ X,YのLocationを任意に移動します。 Bの画像の白色の部分を透過にして、背面の画像Bが見えるように 表示したいのですが、うまくいきません。 PictureBoxコントロールのimageプロパティに 画像Bを設定して、backColorにTransparentを指定しても 親コントロール(画像Bを表示しているPictureBox)の BackColorで表示されるだけでした。 vb6だとimageコントロールを使用すればできました。 vb.netで何か良い方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

PictureBoxで透過処理を行うのであれば BackColorプロパティを Color.TransParentに変更します 次に 設定する画像を Bitmapオブジェクトで構築して MakeTransparentメソッドで 何色を透明にしたいか設定します 次に 透過画像の背景になるコントロールの ControlsコレクションにAddします PictureBoxの Locationを適切な位置に変更すれば 希望の動作になるかと … ' 透過画像を用意 Dim bmp as new Bitmap("透過画像のパス") ' 透過色を設定 bmp.MakeTransparent(bmp.GetPixel(0,0)) ' コントロールの背景色を透過に設定 PictureBox2.BackColor = TransParent ' 透過画像を設定 PictureBox2.Image = bmp ' ここまでが初期設定 ' 背景になるPictureBoxに 前景のコントロールを追加 if PictureBox1.Controls.Contains(PictureBox2) = false then   PictureBox1.Controls.add(PictureBox2) End if ' 前景の描画位置を設定 PictureBox2.Location = new Point( PictureBox1.Width / 2, PictureBox1.Height / 2) といった具合です

it200189
質問者

お礼

ありがとうございました。

関連するQ&A