画像の明るさを調整する
画像の明るさを調整するには、
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