⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 50.txt

📁 介绍VB里的各种控件的使用方法,窗口控制,图像编程以及OCX等内容,还提供了一个API集供参考.
💻 TXT
字号:
一个图像滤光处理程序



  滤光处理是图像处理的一个重要组成部分,通俗地讲,图像的滤光处理就是透过某种颜色的玻璃去观看图像时的效果。本人用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运行后,随便选择一种颜色或几种颜色的组合,并自由调整滤光颜色的强度,然后按下“滤光处理”按钮,即可进行滤光。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -