读了半天终于找到读不懂代码的解释,现在摘抄如下:
DIB和DDB位图的相互转换是DIB操作最重要的操作之一.BitmapToDIB将DDB转换为DIB,我们定义了两个函数变体,原形分别为:
HDIB BitmapToDIB(HBITMAP,HPALETTE);
HDIB BitmapToDIB(HBITMAP,HPALETTE,WORD);
前者是基本函数,她将使用指定调色板的颜色表和设备所使用的图象位数来创建来创建DIB,其基本步骤如下:
(1)初始化BITMAPINFOHEADER结构.
(2)用SelectObject将与DDB对应的调色板(或指定的调色板)选进合适的设备上下问中,并用RealizePalette实现它.
(3)分配足够大的内容空间用以存放DIB的BITMAPINFOHEADER结构和颜色表.
(4)设置LpBits参数为NULL,调用GetDIBits函数以确定BITMAPINFOHEADER结构的biSizeImage域的值(dIB图象位数据的存储量).如果biSizeImage域的值仍为0,则用如下公式计算其值:
(((biWidth*biBitCount)+31)&~31)>>3)*biHeight
(5)根据颜色表和数据位的大小重新和精确分配内存。
(6)再调用GetDLBits以填充颜色表和数据位.