GetPixel(HDC,x,y)返回该点的RGB值,如果你直接把这个图像放到窗体上而不是放在其它控件里,可以在窗体的MouseMove事件中调用GetPixel(Me.hDC,x,y),返回RGB值

解决方案 »

  1.   

    注意:窗体的ScaleMode要设为3-Pixel,否则要进行坐标转换
      

  2.   

    hehe
    又是ltpao(啊炮)兄
    不知ltpao(啊炮)兄可否告知通过颜色索引和调色板得到正确的RGB值的方法呢?
    再加20分
      

  3.   

    根据point函数可以返回一个长整形颜色值,对他进行变换:
    如果不足9位,用0填充。每3位分别是r,g,b的值,如:
    5204106为:
     rgb(5,204,106)
      

  4.   

    请看MSDN,注意GetPaletteEntries,GetNearestPaletteIndex
      

  5.   

    其实我是想通过RGB值和调色板得到正确的颜色索引值,但没有相关材料,所以想得知通过颜色索引和调色板得到正确的RGB值的方法,再用逆算法求出
    另外,crazymxm(小马哥) ,point得出的值为-1,hehe,我自己得出的是15,
      

  6.   

    如果是通过RGB值得到R,G,B分别的值的话,也不难,RGB()的值不过只是个顺排,
    如rgb(255,0,0)就是0000FF,既255,rgb(255,255,255)就是FFFFFF,既什么什么。
    VC里有GetRValue();GetGValue();GetBValue();三个宏。VB里没有。
    不过VB解决方法也很简单,
    可以用hex(rgbcolor)得到十六位的字符串,如果不满6位,可以加位填充,可以对字符串进行操作,分别得到R,G,B值, 最后在字符串上分别加上"&H",然后用cbyte(R十六进制字符串),
    cbyte(G十六进制字符串),cbyte(B十六进制字符串).即可。
    但注意一点,Windows会为系统保留23(也许我记错了)种颜色。此23种颜色不能依照以上方法得出,需要改进,具体改进法自己去想吧(不是卖关子,实在不想去想了)