BITMAPV4HEADER结构 (wingdi.h)

BITMAPV4HEADER结构是位图信息头文件。 它是 BITMAPINFOHEADER 结构的扩展版本。

应用程序可以使用 BITMAPV5HEADER 结构来添加功能。

语法

typedef struct {
  DWORD        bV4Size;
  LONG         bV4Width;
  LONG         bV4Height;
  WORD         bV4Planes;
  WORD         bV4BitCount;
  DWORD        bV4V4Compression;
  DWORD        bV4SizeImage;
  LONG         bV4XPelsPerMeter;
  LONG         bV4YPelsPerMeter;
  DWORD        bV4ClrUsed;
  DWORD        bV4ClrImportant;
  DWORD        bV4RedMask;
  DWORD        bV4GreenMask;
  DWORD        bV4BlueMask;
  DWORD        bV4AlphaMask;
  DWORD        bV4CSType;
  CIEXYZTRIPLE bV4Endpoints;
  DWORD        bV4GammaRed;
  DWORD        bV4GammaGreen;
  DWORD        bV4GammaBlue;
} BITMAPV4HEADER, *LPBITMAPV4HEADER, *PBITMAPV4HEADER;

成员

bV4Size

结构所需的字节数。 应用程序应使用此成员来确定正在使用的位图信息标头结构。

bV4Width

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

如果 bV4Compression 是BI_JPEG或BI_PNG, 则 bV4Width 将指定 JPEG 或 PNG 图像的宽度(以像素为单位)。

bV4Height

位图的高度(以像素为单位)。 如果 bV4Height 为正值,则位图为自下而上的 DIB,其原点为左下角。 如果 bV4Height 为负数,则位图为自上而下 DIB,其原点为左上角。

如果 bV4Height 为负值,则指示自上而下 DIB, 则 bV4Compression 必须是BI_RGB或BI_BITFIELDS。 无法压缩自上而下的 DDB。

如果 bV4Compression 是BI_JPEG或BI_PNG, bV4Height 将指定 JPEG 或 PNG 图像的高度(以像素为单位)。

bV4Planes

目标设备的平面数。 此值必须设置为 1。

bV4BitCount

每像素的位数。 BITMAPV4HEADER 结构的 bV4BitCount 成员确定定义每个像素的位数以及位图中颜色的最大数量。 此成员必须是以下值之一。

含义
0 JPEG 或 PNG 文件格式指定或隐含每像素的位数。
1 位图是单色的,BITMAPINFObmiColors 成员包含两个条目。 位图数组中的每个位表示一个像素。 如果位为清除位,则以 bmiColors 表中第一个条目的颜色显示像素;如果设置了位,则像素具有表中第二个条目的颜色。
4 位图最多包含 16 种颜色,BITMAPINFObmiColors 成员最多包含 16 个条目。 位图中的每个像素都由颜色表中的 4 位索引表示。 例如,如果位图中的第一个字节0x1F,则字节表示两个像素。 第一个像素包含第二个表条目中的颜色,第二个像素包含第十六个表条目中的颜色。
8 位图最多包含 256 种颜色,BITMAPINFObmiColors 成员最多包含 256 个条目。 在这种情况下,数组中的每个字节表示一个像素。
16 位图最多包含 2^16 种颜色。 如果 BITMAPV4HEADER 结构的 bV4Compression 成员BI_RGB,则 BITMAPINFObmiColors 成员为 NULL。 位图数组中的每个 WORD 表示单个像素。 红色、绿色和蓝色的相对强度为每个颜色分量用五位表示。 蓝色的值以最小有效 5 位表示,后跟分别表示绿色和红色的 5 位。 不使用最重要的位。 bmiColors 颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含BITMAPV4HEADER的 bV4ClrUsed 成员指定的条目数。如果BITMAPV4HEADERbV4Compression 成员BI_BITFIELDS,则 bmiColors 成员包含三个 DWORD 颜色掩码,这些颜色掩码指定每个像素的红色、绿色和蓝色分量。 位图数组中的每个 WORD 表示单个像素。
24 位图最多包含 2^24 种颜色,BITMAPINFObmiColors 成员为 NULL。 位图数组中的每个 3 字节三元表示像素的蓝色、绿色和红色的相对强度。 bmiColors 颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含BITMAPV4HEADER的 bV4ClrUsed 成员指定的条目数。
32 位图最多包含 2^32 种颜色。 如果BITMAPV4HEADERbV4Compression 成员BI_RGB,则 BITMAPINFObmiColors 成员为 NULL。 位图数组中的每个 DWORD 表示像素的蓝色、绿色和红色的相对强度。 蓝色的值以最小有效 8 位表示,绿色和红色各有 8 位。 不使用每个 DWORD 中的高字节。 bmiColors 颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含BITMAPV4HEADER的 bV4ClrUsed 成员指定的条目数。如果BITMAPV4HEADERbV4Compression 成员BI_BITFIELDS,则 bmiColors 成员包含三个 DWORD 颜色掩码,这些颜色掩码指定每个像素的红色、绿色和蓝色分量。 位图数组中的每个 DWORD 表示单个像素。

bV4V4Compression

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

说明
BI_RGB 未压缩的格式。
BI_RLE8 8 bpp 位图的运行长度编码 (RLE) 格式。 压缩格式是一种 2 字节格式,由计数字节和包含颜色索引的字节组成。 有关详细信息,请参阅 位图压缩
BI_RLE4 4 bpp 位图的 RLE 格式。 压缩格式是一种 2 字节格式,由计数字节后跟两个单词长度的颜色索引组成。 有关详细信息,请参阅 位图压缩
BI_BITFIELDS 指定不压缩位图。 成员 bV4RedMaskbV4GreenMaskbV4BlueMask 为每个像素指定红色、绿色和蓝色分量。 这在使用 16 和 32-bpp 位图时有效。
BI_JPEG 指定使用 JPEG 文件交换格式压缩图像。 JPEG 压缩权衡压缩与损失;它可以实现 20:1 的压缩比,几乎没有明显的损失。
BI_PNG 指定使用 PNG 文件交换格式压缩图像。

bV4SizeImage

图像的大小(以字节为单位)。 对于BI_RGB位图,这可能设置为零。

如果 bV4Compression 是BI_JPEG或BI_PNG, 则 bV4SizeImage 是 JPEG 或 PNG 图像缓冲区的大小。

bV4XPelsPerMeter

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

bV4YPelsPerMeter

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

bV4ClrUsed

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

如果 bV4ClrUsed 为非零值且 bV4BitCount 成员小于 16,则 bV4ClrUsed 成员指定图形引擎或设备驱动程序访问的实际颜色数。 如果 bV4BitCount 为 16 或更大,则 bV4ClrUsed 成员指定用于优化系统调色板性能的颜色表的大小。 如果 bV4BitCount 等于 16 或 32,则最佳调色板紧随 BITMAPV4HEADER开始。

bV4ClrImportant

显示位图所需的颜色索引数。 如果此值为零,则所有颜色都很重要。

bV4RedMask

指定每个像素的红色分量的颜色掩码,仅当 bV4Compression 设置为 BI_BITFIELDS 时有效。

bV4GreenMask

指定每个像素的绿色分量的颜色掩码,仅当 bV4Compression 设置为 BI_BITFIELDS 时有效。

bV4BlueMask

指定每个像素的蓝色分量的颜色掩码,仅当 bV4Compression 设置为BI_BITFIELDS时有效。

bV4AlphaMask

指定每个像素的 alpha 分量的颜色掩码。

bV4CSType

DIB 的颜色空间。 下表列出了 bV4CSType 的值。

含义
LCS_CALIBRATED_RGB 此值指示终结点和伽玛值在相应的字段中给定。
 

有关定义逻辑颜色空间的信息,请参阅 LOGCOLORSPACE 结构。

bV4Endpoints

CIEXYZTRIPLE 结构,指定与位图关联的逻辑颜色空间的红色、绿色和蓝色端点对应的三种颜色的 x、y 和 z 坐标。 除非 bV4CSType 成员指定LCS_CALIBRATED_RGB,否则将忽略此成员。

注意颜色空间是一种模型,用于以三个或三个以上的坐标以数字形式表示颜色。 例如,RGB 颜色空间表示红色、绿色和蓝色坐标的颜色。
 

bV4GammaRed

红色的音调响应曲线。 除非颜色值是校准的 RGB 值,并且 bV4CSType 设置为 LCS_CALIBRATED_RGB,否则将忽略此成员。 以无符号固定 16.16 格式指定。 高 16 位是无符号整数值。 较低的 16 位是小数部分。

bV4GammaGreen

绿色的音调响应曲线。 如果 bV4CSType 设置为 LCS_CALIBRATED_RGB,则使用。 以无符号固定 16.16 格式指定。 高 16 位是无符号整数值。 较低的 16 位是小数部分。

bV4GammaBlue

蓝色的音调响应曲线。 如果 bV4CSType 设置为 LCS_CALIBRATED_RGB,则使用。 以无符号固定 16.16 格式指定。 高 16 位是无符号整数值。 较低的 16 位是小数部分。

注解

扩展了 BITMAPV4HEADER 结构,允许将 JPEG 或 PNG 图像作为源映像传递到 StretchDIBits

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 wingdi.h (包括 Windows.h)

另请参阅

BITMAPINFO

BITMAPINFOHEADER

BITMAPV5HEADER

位图结构

位图概述

CIEXYZTRIPLE

CreateDIBitmap

LOGCOLORSPACE

StretchDIBits