Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
透明色を指定する
1.指定した色を透明する
以下の例では既に画像が表示されているPictureBox1に、PictureBox2の画像の白い部分を透明にして重ねる。
Dim SourceImage As Image = PictureBox2.Image
Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributesAttr.SetColorKey(Color.White, Color.White) '白を透明色に指定
g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)
PictureBox1.Refresh()
メモ:PictureBox1とPictureBox2にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。
メモ:完全に白い部分だけが透明になります。人間の目には白く見えても白と少しでも違う色は透明になりません。
2.指定した色の範囲を透明にする
以下の例では既に画像が表示されているPictureBox1に、PictureBox2の画像の薄い灰色の部分から白い部分を透明にして重ねる。
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 HighColor As Color = Color.FromArgb(255, 255, 255) '白
Dim LowColor As Color = Color.FromArgb(150, 150, 150) '薄い灰色Attr.SetColorKey(LowColor, HighColor) '薄い灰色から白の範囲の色を透明色に指定
g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr)
PictureBox1.Refresh()
メモ:PictureBox1とPictureBox2にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。
すぐに試せるサンプル
以下の例ではSample2.bmpの上に白っぽい部分を透明にしてSample1.bmpを重ね、PictureBox1に表示する。
サンプルを実行する前に必要なもの:
・PictureBox1
・C:\Sample1.bmp (白い部分のある画像)
・C:\Sample2.bmp
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 HighColor As Color = Color.FromArgb(255, 255, 255) '白 Dim LowColor As Color = Color.FromArgb(150, 150, 150) '薄い灰色 Attr.SetColorKey(LowColor, HighColor) '薄い灰色から白の範囲の色を透明色に指定 g.DrawImage(SourceImage, New Rectangle(New Point, SourceImage.Size), 0, 0, SourceImage.Width, SourceImage.Height, GraphicsUnit.Pixel, Attr) PictureBox1.Image = DestImage SourceImage.Dispose() |