Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
画像の色彩を調節する
以下の関数Emphasizeを使用すると、画像 の赤、緑、青の任意の色を強調(または弱化)することができる。使用例はすぐ下にある。
'''■Emphasize ''' <summary>赤、緑、青の色を強調します。</summary> ''' <param name="SourceImage">元となる画像を指定します。</param> ''' <param name="R">-255からの範囲で赤の強調度を指定します。</param> ''' <param name="G">-255からの範囲で緑の強調度を指定します。</param> ''' <param name="B">-255からの範囲で青の強調度を指定します。</param> ''' <returns>処理後の画像を返します。</returns> ''' <remarks>R, G, Bに等しい値を設定すると画像の明るさを調節できます。</remarks> Private Function Emphasize(ByVal SourceImage As Image, ByVal R As Integer, ByVal G As Integer, ByVal B As Integer) As Bitmap
Dim X
As Integer BMP1 =
CType(SourceImage,
Bitmap) For
Y = 0 To BMP1.Height - 1 C = BMP1.GetPixel(X, Y)
'R, G, Bの値が~の範囲に収まるように調節します。 BMP2.SetPixel(X, Y, Color.FromArgb(NewR, NewG, NewB))
Next X Return BMP2 End Function |
'''■RGBRange ''' <summary>値を0~255の範囲になるように調節します。</summary> ''' <param name="Value">調節前の値を指定します。</param> ''' <returns>調節後の値を返します。この値は必ず0~255の範囲内です。</returns> ''' <remarks></remarks> Private Function RGBRange(ByVal Value As Integer) As Integer
Select Case Value End Function |
メモ:
・この処理にはやや時間がかかります。
・このサンプル中のRGBRange関数は他のサンプルに登場する同名の関数とまったく同じ内容です。
使用例1:PictureBox1の赤を強調する例
Me.Cursor
= Cursors.WaitCursor PictureBox1.Image = Emphasize(PictureBox1.Image, 50, 0, 0) Me.Cursor = Cursors.Default |
メモ:PictureBox1にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。
使用例2:PictureBox1の画像を少し明るくする例
Me.Cursor
= Cursors.WaitCursor PictureBox1.Image = Emphasize(PictureBox1.Image, 50, 50, 50) Me.Cursor = Cursors.Default |
メモ:PictureBox1にはあらかじめ画像を読み込んでおくなどしてImageプロパティに値をセットしておく必要があります。
VB6でも同じ手法で実現できます。処理速度向上のためにWindows API関数のGetDIBitsやSetDIBitsを
使用します。