用VB编程实现图像的熠熠生辉效果(3)
2008-02-23 06:39:14来源:互联网 阅读 ()
Dim R As Byte, G As Byte, B As Byte
With picSource
For i = 0 To .Width .Height * Tan(Angle * pi / 180) WidthOfArea _
Step Speed
'扫描主体图
For X = 0 To .Width - 1
For Y = 0 To .Height - 1
Color = GetPixel(.hdc, X, Y)
'遍历主体图的像素
If Color = MaskColor Then
'skip跳过
Else
L = Abs(X - (i - Y * Tan(Angle * pi / 180)))
'计算当前像素于扫描线的 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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有