勇芳软件工作室.汉化:  Bitmaps > Bitmap Structures >

BITMAPINFOHEADER

Previous pageReturn to chapter overviewNext page

描述

 

BITMAPINFOHEADER结构包含有关DIB的尺寸和颜色格式的信息。

 

Windows 95,Windows NT 4.0:应用程序可以使用BITMAPV4HEADER结构来添加功能。

 

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:应用程序可以使用BITMAPV5HEADER结构来添加功能。但是,这些仅在CreateDIBitmap函数中使用。

 

C++ 语法

 

typedef struct tagBITMAPINFOHEADER{

DWORD  biSize;

LONG   biWidth;

LONG   biHeight;

WORD   biPlanes;

WORD   biBitCount;

DWORD  biCompression;

DWORD  biSizeImage;

LONG   biXPelsPerMeter;

LONG   biYPelsPerMeter;

DWORD  biClrUsed;

DWORD  biClrImportant;

} BITMAPINFOHEADER, *PBITMAPINFOHEADER;

 

PowerBASIC 语法

 

TYPE BITMAPINFOHEADER

biSize AS DWORD

biWidth AS LONG

biHeight AS LONG

biPlanes AS WORD

biBitCount AS WORD

biCompression AS DWORD

biSizeImage AS DWORD

biXPelsPerMeter AS LONG

biYPelsPerMeter AS LONG

biClrUsed AS DWORD

biClrImportant AS DWORD

END TYPE

 

成员

 

biSize

 

指定结构所需的字节数。

 

biWidth

 

指定位图的宽度(以像素为单位)。

 

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:如果biCompression为BI_JPEG或BI_PNG,biWidth成员将分别指定解压缩的JPEG或PNG图像文件的宽度。

 

biHeight

 

指定位图的高度(以像素为单位)。如果biHeight为正,位图为自底向上的DIB,其原点为左下角。如果biHeight为负,则位图是自顶向下的DIB,其原点是左上角。

 

如果biHeight为负,表示自顶向下的DIB,则biCompression必须为BI_RGB或BI_BITFIELDS。自上而下的DIB无法压缩。

 

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:如果biCompression为BI_JPEG或BI_PNG,则biHeight成员分别指定解压缩的JPEG或PNG图像文件的高度。

 

biPlanes

 

指定目标设备的平面数。该值必须设置为1。

 

biBitCount

 

指定每像素的位数。BITMAPINFOHEADER结构的biBitCount成员决定了位图中定义每个像素的位数和最大颜色数。此成员必须是以下值之一。

 

含义

0

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:每像素的位数由JPEG或PNG格式指定或暗示。

1

位图是单色的,BITMAPINFObmiColors成员包含两个条目。位图数组中的每一位表示一个像素。如果该位清除,则以bmiColors表中第一个条目的颜色显示像素;如果该位被设置,则该像素具有表中第二条目的颜色。

4

位图最多有16种颜色,bmiColors {989796169}成员最多包含16个条目。位图中的每个像素由颜色表中的4位索引表示。例如,如果位图中的第一个字节为& H1F,则该字节表示两个像素。第一像素包含第二表条目中的颜色,第二像素包含第十六表条目中的颜色。

8

位图最多有256种颜色,BITMAPINFO BITMAPINFO成员最多包含256个条目。在这种情况下,阵列中的每个字节表示单个像素。

16

位图最多有2 ^ 16种颜色。如果BITMAPINFOHEADERbiCompression成员为BI_RGB,则BITMAPINFObmiColors成员为NULL。位图数组中的每个WORD表示单个像素。红色,绿色和蓝色的相对强度由每个颜色分量的5位表示。蓝色的值是最低有效的5位,后面是绿色和红色的5位。最高有效位未被使用。bmiColors颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含BITMAPINFOHEADER biClrUsed成员指定的条目数。

 

如果BITMAPINFOHEADER BITMAPINFOHEADERbiCompression成员是BI_BITFIELDS,则bmiColors成员包含三个DWORD颜色蒙版,分别指定每个像素的红色,绿色和蓝色分量。位图数组中的每个WORD表示单个像素。

 

Windows NT / Windows 2000 / XP / Vista / Windows 7:当biCompression成员为BI_BITFIELDS时,每个DWORD掩码中设置的位必须是连续的,并且不应与另一个掩码的位重叠。像素中的所有位都不必使用。

 

Windows 95/98 / Me:当biCompression成员为BI_BITFIELDS时,系统仅支持以下16bpp颜色掩码:5-5-5 16位图像,其中蓝色掩码为&H001F,绿色掩码是&H03E0,红色掩码为&H7C00;和5-6-5 16位图像,其中蓝色掩模为&H001F,绿色掩码为&H07E0,红色掩码为&HF800。

24

位图最多有2 ^ 24种颜色,BITMAPINFObmiColors成员为NULL。位图阵列中的每个3字节三元组分别表示像素的蓝色,绿色和红色的相对强度。bmiColors颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含BITMAPINFOHEADER biClrUsed成员指定的条目数。

32

位图最多有2 ^ 32种颜色。如果BITMAPINFOHEADERBITMAPINFOHEADER成员是BI_RGB,bmiColors BITMAPINFO的成员为NULL。位图数组中的每个DWORD分别表示像素的蓝色,绿色和红色的相对强度。不使用每个DWORD中的高字节。bmiColors颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含BITMAPINFOHEADER biClrUsed成员指定的条目数。

 

如果BITMAPINFOHEADER BITMAPINFOHEADERbiCompression成员是BI_BITFIELDS,则bmiColors成员包含三个DWORD颜色掩码,分别指定每个像素的红色,绿色和蓝色成分。位图数组中的每个DWORD表示单个像素。

 

Windows NT / 2000:当biCompression成员是BI_BITFIELDS时,每个DWORD掩码中设置的位必须是连续的,并且不应与另一个掩码的位重叠。像素中的所有位都不需要使用。

 

Windows 95/98 / Me:当biCompression成员为BI_BITFIELDS时,系统仅支持以下32-bpp颜色掩码:蓝色掩码为&H000000FF,绿色掩码为&H0000FF00,红色掩码为&H00FF0000。

 

biCompression

 

指定压缩自下而上位图的压缩类型(自上而下的DIB不能被压缩)。该成员可以是以下值之一。

 

含义

BI_RGB

未压缩的格式。

BI_RLE8

具有8 bpp的位图的行程编码(RLE)格式。压缩格式是一个2字节格式,包括一个计数字节,后跟一个包含颜色索引的字节。

BI_RLE4

具有4 bpp的位图的RLE格式。压缩格式是一个2字节格式,包括一个计数字节,后跟两个字长颜色索引。

BI_BITFIELDS

指定位图未压缩,颜色表由三个DWORD颜色掩码组成,分别指定每个像素的红色,绿色和蓝色分量。当与16位和32位bbb位图一起使用时,这是有效的。

BI_JPEG

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:表示图像是JPEG图像。

BI_PNG

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:表示图像是PNG图像。

 

biSizeImage

 

指定图像的大小(以字节为单位)。BI_RGB位图可能设置为零。

 

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:如果biCompression为BI_JPEG或BI_PNG,则biSizeImage分别表示JPEG或PNG图像缓冲区的大小。

 

biXPelsPerMeter

 

指定位图的目标设备的水平分辨率(以像素/米为单位)。应用程序可以使用该值从与当前设备的特性最匹配的资源组中选择位图。

 

biYPelsPerMeter

 

指定位图的目标设备的垂直分辨率(以像素/米为单位)。

 

biClrUsed

 

指定位图实际使用的颜色表中的颜色索引数。如果该值为零,则位图使用与biCompression指定的压缩模式的biBitCount成员的值相对应的最大颜色数。

 

如果biClrUsed非零,并且biBitCount成员小于16,则biClrUsed成员指定图形引擎或设备驱动程序访问的实际颜色数。如果biBitCount为16或更大,则biClrUsed成员指定用于优化系统调色板性能的颜色表的大小。如果biBitCount等于16或32,则最佳调色板将在三个DWORD掩码之后立即开始。

 

当位图数组紧跟在BITMAPINFO结构之后,它就是一个压缩位图。打包位图由单个指针引用。打包位图要求biClrUsed成员必须为零或颜色表的实际大小。

 

biClrImportant

 

指定显示位图所需的颜色索引数。如果该值为零,则需要所有颜色。

 

备注

 

BITMAPINFO结构结合了BITMAPINFOHEADER结构和颜色表,以提供DIB的尺寸和颜色的完整定义。有关DIB的更多信息,请参阅设备无关位图和BITMAPINFO.

 

应用程序应使用存储在bisiz到成员中的信息来定位BITMAPINFO结构中的颜色表,如下所示:

 

令pColor = + pBitmapInfo pBitmapInfo.bmiHeader.biSize

 

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7BITMAPINFOHEADER结构扩展为允许将JPEG或PNG图像作为源图像传递到StretchDIBits.

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)