一个图像滤光处理程序   滤光处理是图像处理的一个重要组成部分,通俗地讲,图像的滤光处理就是透过某种颜色的玻璃去观看图像时的效果。本人用VB5编程实现了图像的滤光处理,既可以用单独的红色、绿色、蓝色进行滤光,也可以用这三种颜色的任意组合颜色实现滤光,而且任何一种颜色都可以随便调整强度,效果颇佳。下面具体介绍实现方法。   首先新建一个窗体Form1,并创建一个PictureBox控件,把Picture1的Picture属性设置为一副图像。接着引入WINDOWS的两个API函数,并在代码窗体的起始位置声明: Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, _  ByVal x As Long,ByVal Y As Long)As Long Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, _  ByVal x As Long,ByVal Y As Long,ByVal crColor As Long) As Long   然后在Picture1的下方按水平方向连续创建三个TextBox控件,名称都设为Txt,Index属性分别为1、2、3,Text属性为空。和三个TextBox相对应,在其下方创建三个HScrollBar控件,名称都设为HS1,Index属性分别为1、2、3,Min和Value都设为0,SmallChange都设为2,LargeChange都设为10,Max都设为100。和三个HScrollBar相对应,在其下方创建三个Label控件,Caption属性分别设为“红色滤光”、“绿色滤光”、“蓝色滤光”。以上相对应的三组控件都要上下紧挨、大小适中。双击任何一个HScrollBar控件,在HS1_Change()事件中添入下列代码: Private Sub HS1_Change(Index As Integer)   Txt(Index).Text = CStr(HS1(Index).Value)+"%" End Sub   最后在Form1窗体的正下方创建一个CommandButton控件,名称设为ComLg,Caption属性设为“滤光处理”。双击该按钮,在ComLg_Click()事件中添入下列代码: Private Sub ComLg_Click()   Dim hDCp, Wdh, Hgh, RedC, GreenC, BlueC, Rgbp As Long   Wdh = Picture1.ScaleWidth   Hgh = Picture1.ScaleHeight   hDCp = Picture1.hDC   For i& = 1 To Wdh     For j& = 1 To Hgh       Rgbp = GetPixel(hDCp,i&,j&) '获取图像上某点的像素值       RedC = Rghp And & HFF       GreenC = ((Rgbp And & HFF00)/256&) Mod 256&       BlueC = (Rgbp And & HFF0000)/65536       RedC = Ys(RedC + HS1(1).Value / 2 * 5)       GreenC = Ys(GreenC + HS1(2).Value / 2 * 5)       BlueC = Ys(BlueC + HS1(3).Value / 2 * 5)       Rgbp = RGB(RedC, GreenC, BlueC)       SetpixelV hDCp, i&, j&, Rgbp     Next j&   Next i&   MsgBox "图像复位后可再次进行滤光",0,"图像复位"   For i& = 1 To 3     HS1(i&).Value = 0     Txt(i&).Text = "0%"   Next i&   Set Picture1.Picture=Picture1.Image End Sub   另外,还需加入一个校验颜色值的子函数: Private Function Ys(ByVal mColor As Long) As Long   If mColor > 255& Then     Ys = 255   ElseIf mColor < 0 Then     Ys = 0   Else     Ys= mColor   End If End Function   Form_load()事件中添入下列代码: Private Sub Form_Load()   Form1.ScaleMode = 3   Picture1.ScaleMode= 3   Picture1.AutoRedraw = True   For i% = 1 To 3     Txt(i%).Text = "0%"   Next i%   Picture1.AutoRedraw = False End Sub   按F5运行后,随便选择一种颜色或几种颜色的组合,并自由调整滤光颜色的强度,然后按下“滤光处理”按钮,即可进行滤光。