參考文档: http://blog.csdn.net/hnust_xiehonghao/article/details/37652927

http://blog.sina.com.cn/s/blog_4c75bd8c0100zsw7.html

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源

绘制DIB图到到设备,明白一点。DIB设备无关图形向设备CDC上绘的话,肯定是须要经过图形pixel像素转换的,要转换成设备的颜色像素格式。

參考这段说明:

DIB的颜色信息储存在自己的颜色表中。程序一般要依据颜色表为DIB创建逻辑调色板。

在输出一幅DIB之前。程序应该将其逻辑调色板选入到相关的设备上下文中并实现到系统调色板中。然后再调用相关的GDI函数(如::SetDIBitsToDevice或::StretchDIBits)输出DIB。

在输出过程中,GDI函数会把DIB转换成DDB,这项工作主要包含下面两步:

将DIB的颜色格式转换成与输出设备同样的颜色格式。

比如,在真彩色的显示模式下要显示一个256色的DIB,则应该将其转换成24位的颜色格式。

将DIB像素的逻辑颜色索引转换成系统调色板索引。

DIB图形绘制的方法:

1.      
通过CImage绘制图形文件(支持png/bmp/jpg/gif等)

对于DIB图形文件。方法比較简单。也比較易用:

已有DIB图形的文件,使用CImage::load载入图形,然后再使用CImage::Draw绘制到设置DC绑定的图形上就可以

2.      
通过CBitmap载入文件并绘制(仅支持bmp等少量格式)

和CImage类似,CBitmap提供了LoadBitmap方法,载入图形,把一个DIB图形载入成为了一个DDB图形。然后能够用CBitmap::Draw等方法绘制

3.      
通过转换为DDB图形,画图

假设已有内存DIB信息,能够用过CreateDIBitmap函数,把DIB图形结构和数据传入,返回一个DDB的图形HBITMAP

4.      
直接把DIB图形绘制到设备中,函数中自带转换

SetDIBitsToDevice或StretchDIBits函数,通过输入DIB图形信息和HDC以及绘制区域等,直接把DIB图形绘到设备CDC上。

05-11 13:48