画像の明るさを調整する
画像の明るさを調整するには、
R,G,Bそれぞれに、一定の値を足します。

次のコードは画像の明るさを調整するサンプルコードの一部です。
すべてのコードはこのページの下でダウンロードできます。
使い方は、picに調整したいピクチャーボックスを指定し、zoukaryouに増加させる量を指定します。

'picには調整するピクチャーボックス、zoukaryouには-255〜255の値を指定してください。
Public Sub akarusa(pic As PictureBox, zoukaryou As Integer)
Dim i As Long
Dim himg As Long, ohimg As Long
Dim pix() As Long
Dim r As Integer, g As Integer, b As Integer
Dim bmpinfo As BITMAPINFO
Dim ret As Long

pic.AutoRedraw = True
pic.ScaleMode = 3

'初期化
With bmpinfo
    .biBitCount = 32
    .biHeight = pic.ScaleHeight
    .biPlanes = 1
    .biSize = 40
    .biWidth = pic.ScaleWidth
End With

'空のビットマップを作成
himg = CreateCompatibleBitmap(pic.hdc, pic.ScaleWidth, pic.ScaleHeight)

'一時的に空のビットマップを選択
ohimg = SelectObject(pic.hdc, himg)

'配列確保
ReDim pix(pic.ScaleWidth * pic.ScaleHeight - 1) As Long

'色取得
ret = GetDIBits(pic.hdc, ohimg, 0, pic.ScaleHeight, pix(0), bmpinfo, 0)
'失敗したら終わる
If ret = 0 Then GoTo errorhandler

'明るさ調整
For i = 0 To UBound(pix)
    r = GetRed(pix(i)) + zoukaryou
    g = GetGreen(pix(i)) + zoukaryou
    b = GetBlue(pix(i)) + zoukaryou
    
    '0〜255になるように調整
    If r < 0 Then r = 0
    If r > 255 Then r = 255
    If g < 0 Then g = 0
    If g > 255 Then g = 255
    If b < 0 Then b = 0
    If b > 255 Then b = 255
    
    '色をセット
    pix(i) = rgb(r, g, b)
Next i

SetDIBits pic.hdc, ohimg, 0, pic.ScaleHeight, pix(0), bmpinfo, 0

errorhandler:

SelectObject pic.hdc, ohimg
DeleteObject himg

'更新する
pic.Refresh
End Sub

サンプルコードダウンロード(約3KB)

BACK