ヘッダー

VB.NET2002対応 VB.NET2003対応 VB2005対応

 

画像を半透明で重ねる

1.ファイルから読み込んで半透明で重ねる

以下の例では既に画像が表示されているPictureBox1に、新たな画像をファイルから読み込んで半透明で重ねて表示する。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim FileName As String = "C:\Sample1.bmp"
Dim SourceImage As Image = Image.FromFile(FileName)
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim M As New Imaging.ColorMatrix

M.Matrix00 = 1.0F
M.Matrix11 = 1.0F
M.Matrix22 = 1.0F
M.Matrix33 = 0.5F
M.Matrix44 = 1.0F
Attr.SetColorMatrix(M)

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Refresh()

SourceImage.Dispose()

メモ:PictureBox1にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。

 

2.PictureBox2の画像を半透明にしてPicutreBox1に重ねる

 

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim SourceImage As Image = PictureBox2.Image
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim M As New Imaging.ColorMatrix

M.Matrix00 = 1.0F
M.Matrix11 = 1.0F
M.Matrix22 = 1.0F
M.Matrix33 = 0.5F
M.Matrix44 = 1.0F
Attr.SetColorMatrix(M)

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Refresh()

メモ:PictureBox1PictureBox2にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。

 

すぐに試せるサンプル

以下の例ではSample1.bmpとSample2.bmpを半透明にしてPictureBox1に重ねて表示する。

サンプルを実行する前に必要なもの:

PictureBox1

C:\Sample1.bmp

C:\Sample2.bmp

VB.NET2002対応 VB.NET2003対応 VB2005対応

Dim SourceImage As Image = Image.FromFile("C:\Sample1.bmp")
Dim DestImage As Image = Image.FromFile("C:\Sample2.bmp")
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim M As New Imaging.ColorMatrix

M.Matrix00 = 1.0F
M.Matrix11 = 1.0F
M.Matrix22 = 1.0F
M.Matrix33 = 0.5F
M.Matrix44 = 1.0F

Attr.SetColorMatrix(M)

g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)

PictureBox1.Image = DestImage

SourceImage.Dispose()

 


VB6対応  VB6ではAPIやDirectX等を使用しますがかなり困難です。