我在窗体上放了一个影像控件(可以接入由显微镜传入电脑的图像,并且影像是移动的),
然后在影像控件上画了一个固定的十字线,由十字线的交点来读取影像上这一点的颜色值.
现在可以读取影像移动的距离(就像摄像头中显示物体移动一样),但是却无法读取这个
点的颜色值,请大侠指点一下,如需这个控件请留下email.
谢谢!

解决方案 »

  1.   

    如果是动态的,那就比较麻烦,用常规方法是肯定不行的,估计GDI函数可以(关于操作DC的)
      

  2.   

    那你把图象抓到一个PICTUREBOX里后再来读取看看???
      

  3.   

    你先看看影像控件是否提供了hdc属性(或hwnd属性),如果提供了这个属性,则:GetPixel 影像控件.hdc,指定点的横坐标,指定点的横坐标
    的返回值即为所求如果没有提供这个属性:
    GetPixel 影像控件所在容器.hdc,指定点的横坐标,指定点的横坐标
    的返回值即为所求
      

  4.   

    一个timer控件,interval=50
    lblData的控件数组
    picture控件
    功能:取得鼠标经过点的颜色值
    你可以改造以下,在form的MouseMove事件中判断
    Option ExplicitPrivate Type POINTAPI
        x As Long
        y As Long
    End Type
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
    Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As LongPrivate Sub Timer1_Timer()
        Static lX As Long, lY As Long
        On Local Error Resume Next
        Dim P As POINTAPI, h As Long, hD As Long, r As Long
        GetCursorPos P
        If P.x = lX And P.y = lY Then Exit Sub
        lX = P.x: lY = P.y
        lblData(0).Caption = lX & "," & lY
        h = WindowFromPoint(lX, lY)
        lblData(1).Caption = h
        hD = GetDC(h)
        lblData(2).Caption = hD
        ScreenToClient h, P
        lblData(3).Caption = P.x & "," & P.y
        r = GetPixel(hD, P.x, P.y)
        If r = -1 Then
            BitBlt Picture1.hdc, 0, 0, 1, 1, hD, P.x, P.y, vbSrcCopy
            r = Picture1.Point(0, 0)
        Else
            Picture1.PSet (0, 0), r
        End If
        lblData(4).Caption = Hex$(r)
        Picture1.BackColor = r
    End Sub
      

  5.   

    【函数】
    GetPixel【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long【说明】  在指定的设备场景中取得一个像素的RGB值 【返回值】  Long,指定点的RGB颜色。如指定的点位于设备场景的剪切区之外,则返回CLR_INVALID 【其它】  用GetDeviceCaps判断设备是否支持本函数【参数表】
      hdc ------------  Long,一个设备场景的句柄  x,y ------------  Long,逻辑坐标中要检查的点