先用GetDC取得桌面的hDC
用GetPixel得到该点颜色
最后用ReleaseDC释放hDCGetDC VB声明 
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long 
说明 
获取指定窗口的设备场景 
返回值 
Long,指定窗口的设备场景句柄,出错则为0 
参数表 
参数 类型及说明 
hwnd Long,将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC 
注解 
若窗口所属类具有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式,则获取的设备场景属窗口或类专有。vb的窗体和图片框控件也是这种情况,它用该函数取得的结果和控件的hdc属性相同(在autoredraw为FALSE时)。您无须考虑取回的窗体或图片框控件设备场景的默认状态,特别是绘图对象。另外,默认状态随着窗体和控件autoredraw属性的设置而不同。在设备场景释放前您必须回复其状态为初始值。对于没有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式的窗口的设备场景,可从通用windows缓存中获取,其状态为默认值。缓存中可用设备场景数量是有限的,因此只要可能就释放设备场景
用本函数获取的设备场景一定要用ReleaseDC函数释放,不能用DeleteDC
 
GetPixel VB声明 
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long 
说明 
在指定的设备场景中取得一个像素的RGB值 
返回值 
Long,指定点的RGB颜色。如指定的点位于设备场景的剪切区之外,则返回CLR_INVALID 
参数表 
参数 类型及说明 
hdc Long,一个设备场景的句柄 
x,y Long,逻辑坐标中要检查的点 
注解 
用GetDeviceCaps判断设备是否支持本函数
 ReleaseDC VB声明 
Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Long, ByVal hdc As Long) As Long 
说明 
释放由调用GetDC或GetWindowDC函数获取的指定设备场景。它对类或私有设备场景无效(但这样的调用不会造成损害) 
返回值 
Long,执行成功为1,否则为0 
参数表 
参数 类型及说明 
hwnd Long,要释放的设备场景相关的窗口句柄 
hdc Long,要释放的设备场景句柄 
注解 
对那些用CreateDC一类的DC创建函数生成的设备场景,不要用本函数
 

解决方案 »

  1.   

    有点头晕.
    截取程序名为metin
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    ----------------------------------------------------------------
    Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    hdc Long
    x,y Long
    ----------------------------------------------------------------
    ???
    完全点的代码有没有?我的VB流得很.呵呵.
    如果这样就不能截取多个点的色彩了?只能截一个?
      

  2.   

    'Get the Picture's Color Num
    'Lay a Picture(PictureBox) 
    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim pHdc As Long, c As Long
        pHdc = Picture1.hdc
        c = GetPixel(pHdc, x, y)
        Label1.Caption = "当前点颜色值为:" & Format(c)
        
    End Sub
      

  3.   

    TO:w18ily(再回首,西门吹沙) 
    试过了.要么截取的色彩为-1要么就一直是13554646
    x,y的坐标换过别的了..
    怎么全部是一样的?