T>
'计算当前像素于扫描线的 X 方向距离
If L <= WidthOfArea Then '如果当前像素在光照范围内
R = ExtractR(Color) '取 R,G,B
值
G = ExtractG(Color)
B = ExtractB(Color)
EnhanceValue = EnhanceRatio * (WidthOfArea - L)
'算出要增强的亮度值
'加强亮度,但不能超过最大值 255
R = IIf(R + EnhanceValue > 255, 255, R + EnhanceValue)
G = IIf(G + EnhanceValue > 255, 255, G + EnhanceValue)
B = IIf(B + EnhanceValue > 255, 255, B + EnhanceValue)
Color = RGB(R, G, B) '算出加强亮度后的颜色值
End If
SetPixel picDest.hdc, X + OffsetX, Y + OffsetY, Color
'拷贝像素到目标图
End If
Next
Y
Next X
picDest.Refresh '一帧已处理完,显示
DoEvents
Next
i
End With
End Sub
Private Function ExtractR(Col As Long) As
Byte
'提取一个颜色值的红色分量值,红色分量位于这个颜色值的最低字节
Dim tmp As Byte
CopyMemory tmp, ByVal VarPtr(Col),
1
ExtractR = tmp
End Function
Private Function ExtractG(Col As Long)
As Byte
'提取一个颜色值的绿色分量值,绿色分量的位置比红色分量高一字节
Dim tmp As Byte
CopyMemory tmp, ByVal VarPtr(Col) + 1,
1
ExtractG = tmp
End Function
Private Function ExtractB(Col As Long)
As Byte
'提取一个颜色值的蓝色分量值,蓝色分量的位置比绿色分量高一字节
Dim tmp As Byte
CopyMemory tmp, ByVal VarPtr(Col) + 2,
1
ExtractB = tmp
End Function