ヘッダー

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

 

表紙 > VB.NET サンプル >

画像の色を置換する

1.白い部分を黒くする

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

Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim Maps(0) As Imaging.ColorMap

Maps(0) = New Imaging.ColorMap
Maps(0).OldColor = Color.White
'置換前の色に「白」を指定
Maps(0).NewColor = Color.Black '置換後の色に「黒」を指定
Attr.SetRemapTable(Maps)

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

PictureBox1.Image = DestImage

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

 

2.白→黒、赤→青を同時に置換する

 

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

Dim DestImage As Image = PictureBox1.Image
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim Maps(1) As Imaging.ColorMap

Maps(0) = New Imaging.ColorMap
Maps(0).OldColor = Color.White
'置換前の色に「白」を指定
Maps(0).NewColor = Color.Black '置換後の色に「黒」を指定

Maps(1) = New Imaging.ColorMap
Maps(1).OldColor = Color.Red
  '置換前の色に「赤」を指定
Maps(1).NewColor = Color.Blue  '置換後の色に「青」を指定

Attr.SetRemapTable(Maps)

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

PictureBox1.Image = DestImage

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

 

すぐに試せるサンプル

以下の例ではSample1.bmpの白い部分を黒にしてPictureBox1に重ねて表示する。

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

PictureBox1

C:\Sample1.bmp

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

Dim DestImage As Image = Image.FromFile("C:\Sample1.bmp")
Dim g As Graphics = Graphics.FromImage(DestImage)
Dim Attr As New Imaging.ImageAttributes
Dim Maps(0) As Imaging.ColorMap

Maps(0) = New Imaging.ColorMap
Maps(0).OldColor = Color.White
'置換前の色に「白」を指定
Maps(0).NewColor = Color.Black '置換後の色に「黒」を指定
Attr.SetRemapTable(Maps)

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

PictureBox1.Image = DestImage