createDIBitmap 函数 (wingdi.h)

CreateDIBitmap 函数从 DIB 创建兼容的位图 (DDB) ,并选择性地设置位图位。

语法

HBITMAP CreateDIBitmap(
  [in] HDC                    hdc,
  [in] const BITMAPINFOHEADER *pbmih,
  [in] DWORD                  flInit,
  [in] const VOID             *pjBits,
  [in] const BITMAPINFO       *pbmi,
  [in] UINT                   iUsage
);

参数

[in] hdc

设备上下文的句柄。

[in] pbmih

指向位图信息标头结构的指针, BITMAPV5HEADER

如果 fdwInit CBM_INIT,则函数使用位图信息标头结构获取位图的所需宽度和高度以及其他信息。 请注意,高度的正值表示自下而上的 DIB,而高度的负值表示自上而下的 DIB。 使用 fdwInit 作为CBM_INIT调用 CreateDIBitmap 等效于调用 CreateCompatibleBitmap 函数以创建设备格式的 DDB,然后调用 SetDIBits 函数将 DIB 位转换为 DDB。

[in] flInit

指定系统如何初始化位图位。 定义了以下值。

含义
CBM_INIT
如果设置了此标志,系统将使用 lpbInitlpbmi 参数指向的数据来初始化位图位。

如果此标志明确,则不使用这些参数指向的数据。

 

如果 fdwInit 为零,则系统不会初始化位图位。

[in] pjBits

指向包含初始位图数据的字节数组的指针。 数据的格式取决于 lpbmi 参数指向的 BITMAPINFO 结构的 biBitCount 成员。

[in] pbmi

指向 BITMAPINFO 结构的指针,该结构描述 lpbInit 参数指向的数组的尺寸和颜色格式。

[in] iUsage

指定是否初始化 BITMAPINFO 结构的 bmiColors 成员,如果已初始化,则指定 bmiColors 是否包含显式的红色、绿色、蓝色 (RGB) 值或调色板索引。 fuUsage 参数必须是以下值之一。

含义
DIB_PAL_COLORS
提供了一个颜色表,其中包含要在其中选择位图的设备上下文的逻辑调色板中的 16 位索引数组。
DIB_RGB_COLORS
提供了一个颜色表,其中包含文本 RGB 值。

返回值

如果函数成功,则返回值是兼容位图的句柄。

如果函数失败,则返回值为 NULL。

注解

创建的 DDB 将是引用 DC 的任何位深度。 若要创建位深度不同的位图,请使用 CreateDIBSection

若要使设备达到最佳位图绘制速度,请将 fdwInit 指定为 CBM_INIT。 然后,使用与视频模式相同的颜色深度 DIB。 当视频运行 4 bpp 或 8 bpp 时,请使用DIB_PAL_COLORS。

不再支持 fdwInit 参数的CBM_CREATDIB标志。

如果不再需要位图,请调用 DeleteObject 函数将其删除。

Icm: 不执行颜色管理。 创建位图后,生成的位图的内容与颜色不匹配。

要求

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

另请参阅

BITMAPINFO

BITMAPINFOHEADER

位图函数

位图概述

CreateCompatibleBitmap

CreateDIBSection

DeleteObject

GetDeviceCaps

GetSystemPaletteEntries

SelectObject

SetDIBits