GDI对象在windows中可以描述成为一次绘画操作时可使用的抽象工具。包括(画笔、画刷、字体、区域、调色板、位图等)
GDI对象里的对象概念和在编程领域中面向对象编程的对象概念是不一样的!
GDI对象更多的偏重于是一个实体,而编程中的对象是一个能提供各种服务抽象概念。
在Windows中可以通过如下方式查看一个进程所拥有的GDI对象总数
1.打开任务管理器。
2.点击查看——选择列
3.选中“GDI对象”
然后再任务管理器中就能够查看了
在Windows中这种Gdi位图就叫做DDB(Device-Dependent Bitmap)设备相关图
在Windows中还有一个名字 叫做DIB(Device-Independent Bitmap)设备无关图,这个其实不是图,而是一种windows文件格式。
可以通过如下方式来创建GDI位图
1.HBITMAP hb= CreateBitmap(cx, 宽的像素个数
cy, 高的像素个数
cPlanes, 调色板数目,一般是1
cBitsPixel, 每个像素使用多少个位来表示
bits) 指向一位位数组的指针
2.HBITMAP hb= CreateCompatibleBitmap(hdc,cx,cy);
3.HBITMAP hb= CreateBitmapIndirect(&bitmap);
bitmap的结构为
bmtype 0
bmwidth 像素宽度
bmheight 像素高度
bmwidthBytes 每个扫描线的字节数,必须能被2整除,因为windows 会假设位图都是字对齐的。字对齐是一个非常重要的特性,我将再以后高级部分讲解
bmplanes 调色板数目,一般是1
bmBitsPixel 每个像素使用多少个位来表示
bmBits 指向一个位数组的指针(从上到下绘图,也就是说图像的第一个扫描行对应数组的前面几个位,最后一个扫描行对应数组的最后几位)
要使用GDI位图,也是用其他GDI对象一样,都是需要将位图选进到设备描述表,但是是用与位图选择的设备描述表是通过CreateCompatibleDc(hdc)所创建的内存设备描述表。