当前位置:编程学习 > VB >>

l = GetPixel(dd, p.x, p.y) 得到的颜色数值,如何转换成RGB呢?

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

Private 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
--------------------编程问答-------------------- 窗体请装载一张图片

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 Sub

Private 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 Sub

Public Sub GetRGB(Clrval As Long)
   Red = Clrval Mod 256
   Green = (Clrval \ 256) Mod 256
   Blue = Clrval \ 256 \ 256
End Sub

--------------------编程问答-------------------- 学习。 --------------------编程问答--------------------
Option Explicit

Private 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 Sub

Private 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
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,