我在书上看到RGB宏实际上是用一个双字节字来存取一个像素的颜色,可是我不明白了,一共16位怎么给红,绿,蓝分配啊?还有我记得在书上看到了一个半字节的类型,那么是BYTE类型吗?
好象不是吧?在位图文件的信息中有个RGBQUAD结构,用来存放颜色表,里面定义了四个BYTE文件类型的数据,三个是R,G,B,还有一个欲留,可是他说存储的颜色也是双字节的,我就不明白了怎么能行呢?请各位高手指教!

解决方案 »

  1.   

    一个 DWORD 类型表示一个颜色 R,G,B,A  各占一个 byte
      

  2.   

    DWORD 是32位,不是16位
    BYTE 是8位,是一个字节,不是半个字节
      

  3.   

    我们常见的显示系统显示的图像实际都是用二进制数据来表示的!一个象素就是一个数据!在32位中即2^32
    这样一个DWORD表示一个像素点
    RGB每个为一个BYTE 8位(0~255)
    rrrrrrrr gggggggg bbbbbbbb 00000000(保留)24位中
    rrrrrrrr gggggggg bbbbbbbb
    他和24位中少了一个保留~至于32位中的保留我在书上看见好像是为3d游戏中深度做标记的!方便~16位
    rrrrrggggggbbbbb
    我们只好缩短表示范围来表示!
    取rrrrrrrr中的前5位!一般在16位系统中我们有两种表示法
    555模式和565模式
    555为:0rrrrrgggggbbbbb
    565:   rrrrrggggggbbbbb至于256则需要调色版了!大概如此!
      

  4.   

    DWORD   A 32-bit unsigned integer or the address of a segment and its associated offsetThe RGBQUAD structure describes a color consisting of relative intensities of red, green, and blue. typedef struct tagRGBQUAD { // rgbq 
        BYTE    rgbBlue; 
        BYTE    rgbGreen; 
        BYTE    rgbRed; 
        BYTE    rgbReserved; 
    } RGBQUAD; u see ,it's equal in size :) 
      

  5.   

    yesCOLORREF RGB(
      BYTE byRed,    // red component of color
      BYTE byGreen,  // green component of color
      BYTE byBlue    // blue component of color
    );
      

  6.   

    GetRValue( ) GetBValue( )  GetGValue()这三个函数
      

  7.   

    agree with all upstairs
      

  8.   

    你看的什么书啊,和作者打官司去。RGB结构占用了3个字节,分别存红绿蓝分量。   
    还有我记得在书上看到了一个半字节的类型。有半字节的类型,但不是用在颜色上的吧。你用位段可以定义任意位(<8)的类型。
    在位图文件的信息中有个RGBQUAD结构,用来存放颜色表,里面定义了四个BYTE文件类型的数据,三个是R,G,B,还有一个欲留,可是他说存储的颜色也是双字节的——尽信书不如无书!