+ -
当前位置:首页 → 问答吧 → BITMAP bmWidthBytes 计算方法

BITMAP bmWidthBytes 计算方法

时间:2011-11-22

来源:互联网

各位,小弟今天使用 CreateBitmapIndirect 从内存数据生成一张位图,但执行失败,原因是 
bmWidthBytes 计算有问题。
网上找的24位位图的计算公式是 ((bmp.bmWidth * bmp.bmBitsPixel + 15)&~15)/16;
bmBitsPixel = 24。

我使用的是256色位图,请问如何计算?

如果是单色,16色等各种情况分别怎么计算的,谢谢!

作者: ningfc1024   发布时间: 2011-11-22

查MSDN啊,这种问题MSDN上有的。

作者: azand   发布时间: 2011-11-30

不懂帮顶

作者: cjqpker   发布时间: 2011-11-30

引用楼主 ningfc1024 的回复:
各位,小弟今天使用 CreateBitmapIndirect 从内存数据生成一张位图,但执行失败,原因是
bmWidthBytes 计算有问题。
网上找的24位位图的计算公式是 ((bmp.bmWidth * bmp.bmBitsPixel + 15)&~15)/16;
bmBitsPixel = 24。

我使用的是256色位图,请问如何计算?

如果是单色,16色等各种……

256色,2的8次方等于256,也就说用一个byte就可以表示色盘中任意的Index值(bmp图如果不是真彩色的话,那真正的Pixel数据是色盘的索引值),所以bmWidthBytes即为扫描一行的Byte的个数。
bmWidthBytes = ((bmp.bmWidth * 8 /8) + 15) & ~15)/16

作者: yuucyf   发布时间: 2011-11-30

热门下载

更多