如题
Public Const p8_Color = 16243629
GetPixel(dd, p.x, p.y)得到的颜色数值类似与上面的那个

解决方案 »

  1.   

    Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
         ByVal Destination As Long, _
         ByVal Source As Long, _
         ByVal Length As Long)Private Sub Command1_Click()
        Dim I As Long, J(3) As Byte
        
        I = 16243629
        CopyMemory VarPtr(J(0)), VarPtr(I), 4
        Debug.Print "R=" & Hex(J(0)) & " G=" & Hex(J(1)) & " B=" & Hex(J(2))
    End Sub
      

  2.   

    窗体请装载一张图片Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
    Dim Colorval&, Red&, Green&, Blue&
    Private Sub Form_Load()
       Me.ScaleMode = 3
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
       Colorval = GetPixel(Me.hDC, X, Y)
       Call GetRGB(Colorval)
       Me.Caption = CStr(Colorval) & "  分解为 红:" & CStr(Red) & "  绿:" & CStr(Green) & "  蓝:" & CStr(Blue)
    End SubPublic Sub GetRGB(Clrval As Long)
       Red = Clrval Mod 256
       Green = (Clrval \ 256) Mod 256
       Blue = Clrval \ 256 \ 256
    End Sub
      

  3.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim l As Long
        
        l = RGB(0, 255, 0)
        
        Dim r As Byte
        Dim g As Byte
        Dim b As Byte
        
        getrgb l, r, g, b
        
    End SubPrivate Sub getrgb(ByVal c As Long, ByRef r As Byte, ByRef g As Byte, ByRef b As Byte)
        If c < 0 Then
            c = c + 2 ^ 32
        End If
        
        r = c Mod 256
        g = (c \ 256) Mod 256
        b = (c \ 65536) Mod 256
        
    End Sub