我先在画图程序中画了几幅分别是单色,16色,256色和24位的位图,然后把它们都载入到应用程序中,然后分别用CBitmap::LoadBitmap创建了4个CBitmap对象,但是为什么当我用GetBitmap来读取这四个位图对象的信息时,它们的BITMAP结构中的bmBitsPixel都是32?

解决方案 »

  1.   

    第一部分为位图文件头BITMAPFILEHEADER,是一个结构,其定义如下:
    typedef struct tagBITMAPFILEHEADER {
            WORD bfType; 
            DWORD bfSize; 
            WORD bfReserved1; 
            WORD bfReserved2; 
            DWORD bfOffBits; 
    } BITMAPFILEHEADER; 第二部分为位图信息头BITMAPINFOHEADER,也是一个结构,其定义如下:
    typedef struct tagBITMAPINFOHEADER{
             DWORD biSize; 
             LONG biWidth; 
             LONG biHeight; 
                WORD biPlanes; 
    WORD biBitCount 
    DWORD biCompression; 
    DWORD biSizeImage; 
    LONG biXPelsPerMeter; 
    LONG biYPelsPerMeter; 
    DWORD biClrUsed; 
    DWORD biClrImportant; 
    } BITMAPINFOHEADER;第三部分调色板
    typedef struct tagRGBQUAD { 
    BYTE rgbBlue; //该颜色的蓝色分量
    BYTE rgbGreen; //该颜色的绿色分量
    BYTE rgbRed; //该颜色的红色分量
    BYTE rgbReserved; //保留值
        } RGBQUAD; 位图信息头BITMAPINFOHEADER中的
    biBitCount
    才是表示位图用到的位数,BITMAP结构中没有bmBitsPixel吧