这有个位图文件载入得到HBITMAP,然后通过GetObject得到BITMAP,调试一看,bmWidth是147,bmPlanes是1,bmBitsPixel是24,怎么bmWidthBytes是444呢,不是应该为147*3凑成偶数那就是442吗?

解决方案 »

  1.   

    谁告诉你是凑偶数呢?是四字节对齐。已知bmWidth和bmHeight时,图像大小计算:
    (bmWidth*8+31)/32*4*bmHeight
      

  2.   

    http://www.kaifa6.com/v/mfcshouce/Struct/BITMAP.htm里面说的bmWidthBytes 指定了每个扫描行中字节的数目。这个值必须是个偶数,因为图形设备接口(GDI)假定位图中的位值构成一个整数(2字节)数组。换句话说,bmWidthBytes*8必须是16的倍数,大于或等于bmWidth与bmBitsPixel相乘所得的值。  总之问题的原因应该是1楼所说的了吧,5楼这个计算公式如果能分析下就好了。
      

  3.   

    24位色的RGB位图其实是32位存储的,其中只有3个字节用到了,第4个字节是0。