アプリ版:「スタンプのみでお礼する」機能のリリースについて

背面画像Aと前面画像Bがあります。
画像Bは画像A上をファイルから読み込んだ
X,YのLocationを任意に移動します。

Bの画像の白色の部分を透過にして、背面の画像Bが見えるように
表示したいのですが、うまくいきません。

PictureBoxコントロールのimageプロパティに
画像Bを設定して、backColorにTransparentを指定しても
親コントロール(画像Bを表示しているPictureBox)の
BackColorで表示されるだけでした。

vb6だとimageコントロールを使用すればできました。

vb.netで何か良い方法はないでしょうか?

A 回答 (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)

といった具合です
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/10/28 12:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています