ColorRGB = GetPixel(g_WindowsDC, X, Y)    Str = Strings.Left(Hex(RGB) & "000000", 9) 
    
    R = Mid(Str, 1, 2)
    Rr = CDec("&H" & R)
    
    Text2.Text = Rr
RGB颜色数字一共有9位对吧.怎么把我上面代码的2改为3,Text2.Text显示却有4位呢.RGB的范围是0-255吧.Text2.Text是怎么算出来的.....
Str = Strings.Left(Hex(RGB) & "000000", 9)中的"000000"是什么意思.去掉了程序又要报错.里面的9是不是表示一共有9位字符串的意思?

解决方案 »

  1.   

    Str = Strings.Left(Hex(RGB) & "000000", 9)
    表示取左面9位字符
    去掉就不够位数了
      

  2.   

    RGB本来不就是只有9位?
    为什么还要加"000000"
      

  3.   

    colorrgb = GetPixel(Me.hdc, X, Y)   ' 得到指定位置的颜色
    r = Mid(Hex(colorrgb), 1, 2)        ' 将这个颜色转为16进制后取前面2位
    rr = CDec("&H" & r)                 ' 将取得的两位16进制数转为十进制数Text2.Text = rr就行,没必要再取个9位。CDec函数将一个十六进制转成了十进制,所以Text2就得出结果了啊。
      

  4.   

    将你的ColorRGB传入下面的这个函数,就能得到红绿蓝颜色了,效率还非常高呢。
    '-----------------------------------------------------------------------------------
    '获得 RGB 颜色,传入的颜色可以是系统色,RGB 以 ByRef 的方式进行写入
    '-----------------------------------------------------------------------------------
    Public Sub GetRGB(ByVal Color As Long, Red As Long, Green As Long, Blue As Long)
        If Color < 0 Then Color = GetSysColor(Color And &HFF)
        Red = Color And &HFF&
        Green = (Color And &HFF00&) \ &H100
        Blue = (Color And &HFF0000) \ &H10000
    End Sub