明明是个16色位图,代码如下: BITMAP bm;
bitmap->GetBitmap(&bm);
wid = bm.bmWidth;
hei = bm.bmHeight;
bits = bm.bmBitsPixel;
size = wid * hei;
col = index = pos = 0;
bytesPerLine = bm.bmWidthBytes;那个bm.bmBitsPixel却是32,哪里出错了?

解决方案 »

  1.   

    CBitmap是DDB设备相关位图,它的属性和加载的DC有关你的原始位图虽然是16位的,但是你加载到32位的设备DC中,这里的到的深度就是32位
      

  2.   

    如果希望取得原始位图的深度,应该在文件的BITMAPINFOHEADER中取得。
      

  3.   

    这样的话,如果用GetBitmapBits得到的数据是按32位算的还是16位算的呢?我只是想读取所有像素点颜色,如果不影响(歪打正着)的话,那就不用改了。
    另,怎么得到BITMAPINFOHEADER呢?