首页 > 代码库 > [C#绘图]位图类型

[C#绘图]位图类型

位图是位的数组,它指定了像素矩阵中各像素的颜色。位图就是一个二位数组,这个二维数组的每个元素代表像素矩阵中的一个像素的值。当然这个值是由范围的,跟你给他的位数有关,你给他8位,它的值的范围就是0~255,对应到像素矩阵上就有256种颜色可选。

所以位图是一个二维的数组,数组的每个元素对应像素矩阵中的一个像素,这个元素的值决定这个像素的颜色。二维数组的每个元素可以看成一个位向量,位的个数决定元素的取值范围,决定像素的颜色数。

专用于单个像素的位数决定了可分配到该像素的颜色数。 例如,如果用 4 位来呈现每个像素,那么一个给定的像素就可以分配到 16 (2^4 = 16) 种颜色中的一种。 下表中的几个示例显示了可分配到由给定位数代表的像素的颜色数量。


存储位图的磁盘文件通常包含一个或多个信息块,信息块中存储了如每像素位数、每行的像素数以及数组中的行数等信息。 这样一个文件也可能包含颜色表(有时称为调色板)。 颜色表将位图中的数值映射到特定的颜色。 下面的插图显示了一幅放大的图像以及它的位图和颜色表。 每个像素用一个 4 位数表示,那么颜色表中有 2^4 = 16 种颜色。 表中的每种颜色用一个 24 位数表示:8 位用于红色,8 位用于绿色,8 位用于蓝色。 数字以十六进制(基 16)形式显示:A = 10,B = 11,C = 12,D = 13,E = 14,F = 15。

技术分享

请看位于该图像第 3 行、第 5 列的像素。 位图中对应的数字为 1。 颜色表告诉我们 1 表示红色,因此该像素是红色的。 该位图最上面一行中所有的项都是 3。 颜色表告知我们 3 表示蓝色,因此该图像最上面一行中的所有像素都是蓝色。

注意:一些位图是以上下颠倒的格式存储的;位图首行中的数值对应于图像末行中的像素。

在颜色表中存储索引的位图称为“调色板索引位图”。 有些位图不需要颜色表。 例如,如果位图使用每像素 24 位的格式,那么该位图就可以将颜色本身(而不是索引)存储到颜色表中。 下面的插图显示了一个直接存储颜色(24 位/像素)而不使用颜色表的位图。 该插图也显示了相应图像的放大视图。 在位图中,FFFFFF 表示白色,FF0000 表示红色,00FF00 表示绿色,0000FF 表示蓝色。

技术分享


位图文件格式

有许多将位图存储到磁盘文件的标准格式。 GDI+ 支持下面段落中所描述的图形文件格式。

[C#绘图]位图类型