|
第一个问题:在使用GetObject(hBitmap, sizeof(BITMAP), &bm)函数取得的位图的属性中的bm.bmBitsPixel表示的应该是位图的位深吧?但是我在XP的系统上使用该函数的时候,当我把系统的分辨率设置为16位时,该函数得到的就为16,如果把系统的分辨率设置为32位时,该函数得到的就为32,不管使用什么样位深的位图都是这样的结果,感觉与位图的无关,而与系统有关。但是,当我在开发板上使用该函数的时候情况就变了,函数得到的值和图片的位深相同,请问这是为什么?是否是我在使用上由什么不对的地方。
第二个问题:我对24位位深的位图计算它的存放RGB颜色的数组的大小时,我使用bm.bmWidth*bm.Height*3来计算。而我看到有别人是这样来计算:bm.bmHeight*WIDTHBYTES(bm.bmWidth*24)
其中:#define WIDTHBYTES(bits) ((((bits) + 31)>>5)<<2)
这样他计算出来的长度比我的大些,而且经过我试验证明他的计算方法是对的,而我的却不对,少了一点。少的数量正好是图片的高度,是否是图片在格式上有什么要求,比如说象字符串一样在每行的后面要有一个\0的结束符一样(这种说法肯定不正确)?我想问下为什么我的计算方法不对,而他的又是对的???
|
|