小弟入门不久,请教一个关于位图的问题
对于24位的位图,通过分析位图文件的信息(BITMAPINFO),发现保存位图的字节数是像素数(长*宽)的2倍,同时,在读取完毕后,得到位图指针(CBitmap*),调用GetBitmapBits(),得到的信息好像也是用2个字节描述一个像素的,msdn对于GetBitmapBits()的说明是16位的方法,32位用GetDIBits()。
  我的问题是:
       1 用2个字节如何描述位图信息( red grenn blue)?
       2 GetDIBits()如何使用? hdc这个参数怎么设?
       3 如何得到每个像素的 Red Green Blue?

解决方案 »

  1.   

    樓上 Zhymax(蓝点) 
    你的回答我有些看不懂,如果是 R:G:B = 5 : 5: 6 ,請問如何描述白色(255,255,255),5個字節根本不夠用嘛
      

  2.   

    同意楼上的,不知道楼主怎么算出每象素2字节的,用3字节描述自然就是RGB各255了,至于每象素22字节的是16位高彩RG各5位,B6位,也有555,565方式
      

  3.   

    16位模式下有555和565两种方式,目前大部分是565模式,即RRRRRGGGGGGBBBBB,所以红色可以从0到31,绿色可以从0到63,蓝色可以从0到31。从真彩色转化到高彩可以采用如下公式:
    高彩色=(RED>>3)<<11 | (GREEN>>2)<<5 | (BLUE>>3)
    RED、GREEN、BLUE分别代表真彩色下的红绿蓝。