打印本文 打印本文 关闭窗口 关闭窗口
用VB编程实现图像的熠熠生辉效果
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1915  更新时间:2009/4/23 15:03:26  文章录入:mintao  责任编辑:mintao
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

  本程序在Win2000+VB6.0下调试通过。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口