关于位图

位图是可在 DC) (设备上下文 中选择的 GDI 对象之一。 设备上下文 是定义一组图形对象及其关联属性的结构,以及影响输出的图形模式。 下表描述了可在设备上下文中选择的 GDI 对象。

图形对象 说明
位图 创建、操作 (缩放、滚动、旋转和绘制) ,并将图像存储为磁盘上的文件。
画笔 绘制多边形、省略号和路径的内部。
字体 在视频显示和其他输出设备上绘制文本。
逻辑调色板 由应用程序创建并与给定设备上下文关联的调色板。
路径 一个或多个图形 (或形状) 填充和/或轮廓。
应用程序用于绘制线条和曲线的图形工具。
区域 矩形、多边形或椭圆 (或两个或多个这些形状的组合) 可以填充、绘制、倒置、框架,并用于对光标位置) 执行命中测试 (测试。

 

从开发人员的角度来看,位图由指定或包含以下元素的结构集合组成:

  • 一个标头,用于描述创建像素矩形的设备分辨率、矩形的尺寸、位数组的大小等。
  • 逻辑调色板。
  • 一个位数组,用于定义位图图像中的像素与逻辑调色板中的条目之间的关系。

位图大小与它包含的图像类型相关。 位图图像可以是单色或颜色。 在图像中,每个像素对应于位图中的一个或多个位。 单色图像的每个像素的比率为 1 位, (bpp) 。 颜色成像更为复杂。 位图可以显示的颜色数等于每个像素的位数两个。 因此,256 色位图需要 8 bpp (2^8 = 256) 。

控制面板应用程序是使用位图的应用程序的示例。 为桌面选择背景 (或壁纸) 时,实际上选择位图,系统使用该位图绘制桌面背景。 系统通过反复在桌面上绘制 32 x 32 像素图案来创建所选背景图案。

下图显示了开发人员对文件Redbrick.bmp中找到的位图的透视。 它显示调色板数组、32 x 32 像素矩形,以及将颜色从调色板映射到矩形中的像素的索引数组。

illustration of the pixel rectangle, palette array, and index array of redbrick.bmp

在前面的示例中,使用 16 种颜色的调色板在 VGA 显示设备上创建了像素矩形。 16 色调色板需要 4 位索引;因此,将调色板颜色映射到像素颜色的数组也由 4 位索引组成。 (有关逻辑调色板的详细信息,请参阅 Colors.)

注意

在上面的位图中,系统将索引映射到以矩形区域的底部扫描行开头的像素,以顶部扫描行结尾。 扫描行是视频显示器上相邻像素的单行。 例如,数组的第一行 (第 0 行) 对应于像素的下行,扫描行 31。 这是因为上面的位图是一个自下而上的设备独立位图, (DIB) ,这是一种常见的位图类型。 在自上而下和设备相关的位图中, (DDB) ,系统将索引映射到以顶部扫描行开头的像素。

 

以下主题介绍位图的不同区域。