描述
CreateDIBitmap功能从DIB创建一个兼容的位图(DDB),并且可选地设置位图位。
C++ 语法
HBITMAP CreateDIBitmap( __in HDC hdc, __in const BITMAPINFOHEADER *lpbmih, __in DWORD fdwInit, __in const VOID *lpbInit, __in const BITMAPINFO *lpbmi, __in UINT fuUsage ); |
PowerBASIC 语法
FUNCTION CreateDIBitmap( _ BYVAL hdc AS DWORD, _ BYREF lpbmih AS BITMAPINFOHEADER, _ BYVAL fdwInit AS DWORD, _ BYREF lpbInit AS ANY, _ BYREF lpbmi AS BITMAPINFO, _ BYVAL fuUsage AS DWORD _ ) AS DWORD |
参数
hdc
[in]处理设备上下文。
lpbmih
[in]指向位图信息头结构的指针,可能是下表中显示的那些。
操作系统 |
位图信息头 |
Windows NT 3.51及更早版本 |
BITMAPINFOHEADER |
Windows 95和Windows NT 4.0 |
BITMAPV4HEADER |
Windows 98 / Me和Windows 2000 |
BITMAPV5HEADER |
如果fdwInit是CBM_INIT,则该函数使用位图信息头结构来获得所需的位图宽度和高度以及其他信息。请注意,高度的正值表示自底向上的DIB,而高度的负值表示自顶向下的DIB。使用fdwInit作为CBM_INIT调用CreateDIBitmap相当于以CreateCompatibleBitmap函数调用设备格式创建DDB,然后调用SetDIBits函数将DIB位转换为DDB。
fdwInit
[in]指定系统如何初始化位图位。定义了以下值。
值 |
含义 |
CBM_INIT |
如果设置此标志,系统将使用lpbInit和lpbmi参数指向的数据来初始化位图位。
如果该标志清除,则不使用这些参数指向的数据。 |
如果fdwInit为零,则系统不会初始化位图位。
lpbInit
[in]指向包含初始位图数据的字节数组数组。数据的格式取决于BITMAPINFO参数指向的BITMAPINFO结构的biBitCount成员。
lpbmi
[in]指向BITMAPINFO结构的指针,用于描述lpbInit参数指向的数组的维度和颜色格式。
fuUsage
[in]指定BITMAPINFO结构的bmiColors成员是否已初始化,如果是,是否bmiColors是否包含显式的红色,绿色,蓝色(RGB)值或调色板索引。德鲁·塞奇参数必须是以下值之一。
值 |
含义 |
DIB_PAL_COLORS |
提供了一个颜色表,并将16位索引的阵列组合到要选择位图的设备上下文的逻辑调色板中。 |
DIB_RGB_COLORS |
提供了颜色表并包含文字RGB值。 |
返回值
如果函数成功,则返回值是兼容位图的句柄。
如果函数失败,返回值为NULL。
Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.
备注
创建的DDB将是您的参考DC的任何位深度。要创建位图不同位图,请使用CreateDIBSection.
要使设备达到最佳位图绘制速度,请将fdwInit指定为CBM_INIT。然后,使用与视频模式相同的颜色深度DIB。当视频正在运行4-或8-bpp时,请使用DIB_PAL_COLORS。
不再支持fdwInit参数的CBM_CREATDIB标志。
当您不再需要位图时,请调用DeleteObject功能将其删除。
ICM:不执行颜色管理。在创建位图后,生成的位图的内容不会进行颜色匹配。
Windows 95/98 / Me:创建的位图的大小不能超过16MB。
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)