- /*
- 设备无关图 DIB
- 设备无关图包含一个颜色表,该表用于描述像素值与RGB颜色值的对应关系。
- 设备无关图的意思是这种类型的位置能够在任何设备上找到一个合适的颜色方案。
- 一个设备无关图包含下述的颜色和尺寸信息:
- 创建矩形图片的设备的颜色格式
- 创建矩形图片的设备的分辨率
- 创建矩形图片的设备的调色板
- 建立矩形图片像素与红绿蓝三色关系的矩阵
- 标识着数据压缩方案的数据压缩标识
- DIB的颜色和尺寸信息存储在结构体BITMAPINFO中。该结构体由两部分组成,
- 一部分是结构体BITMAPINFOHEADER,另一部分是紧跟其后的两个或多个RGBQUAD
- 结构体。前者指定了位图所属的矩形区域的尺寸,描述了设备的颜色技术,
- 标识了位图的压缩方案。后者指定了矩形区域每一像素的颜色。
- 有两种类型的DIB:
- 由下至上的DIB,即矩形的坐标原点在左下角。
- 由上到下的DIB,即矩形的坐标原点在左上角。
- 矩形的高度由BITMAPINFOHEADER结构体的Height成员表示。如果该成员变量的值
- 为正数,说明其所属的位图是由下至上的;如果该值为负数,说明其所属的位图
- 是由上至下的。
- 由上至下的DIB不能被压缩。
- 颜色的格式由一个色彩平面数和颜色所占的位数指定。色彩平面数总是1,而颜色
- 位数却是可变的,如位数为1时即表示黑白位图,为4时表示VGA位图,8,16,24,
- 32则表示其它设备上的位图。程序可以通过函数GetDeviceCaps获取设备所使用
- 的颜色倍数,第二个参数指定为BITPIXEL。
- 显示设备的分辨率由每米所包括的像素的个数决定。程序可通过以下三步取得设备
- 的水平方向的分辨率:
- 调用GetDeviceCaps,第二个参数指定为HORZRES,返回值为A
- 再次调用GetDeviceCaps,第二个参数指定为HORZSIZE,返回值为B
- A/B即是水平方向上设备的分辨率
- 同样,程序也可以通过这三步取得坚直方向的分辨率,两次调用时第二个参数分别
- 用VERTRES和VERTSIZE代替即可。
- 调色板用一个RGBQUAD结构组成的矩阵表示。RGBQUAD指定了设备上颜色的红,绿,
- 蓝三无色的组成比例。调用板首先是一个矩阵,该矩阵中每一个索引都与位图所
- 属的矩形区域的像素关联在一起。在位为单位作计量时,矩阵的大小等于位图
- 矩形区域的宽度(以像素为单位),高度(以像素为单位),颜色位数(以位
- 为单位)的乘积。程序可以通过函数GetDeviceCaps取得调色板的大小,第二个
- 参数指定为NUMCOLORS即可。
- Windows支持调色板矩阵的压缩,该调色板必须是针对8bpp或4bpp的下至上的DIB。
- 压缩可采用RLE算法。RLE压缩方案使用两个字节的值记录信息,第一个字节用于
- 记录使用同一颜色索引的连续像素的数目,第二个字节指定这个索引值。
- */
DIB,设备无关图
最新推荐文章于 2024-09-25 14:20:40 发布