setDIBits 函数 (wingdi.h)

SetDIBits 函数使用在指定的 DIB 中找到的颜色数据设置兼容位图 (DDB) 中的像素。

语法

int SetDIBits(
  [in] HDC              hdc,
  [in] HBITMAP          hbm,
  [in] UINT             start,
  [in] UINT             cLines,
  [in] const VOID       *lpBits,
  [in] const BITMAPINFO *lpbmi,
  [in] UINT             ColorUse
);

参数

[in] hdc

设备上下文的句柄。

[in] hbm

将使用指定 DIB 中的颜色数据更改的兼容位图 (DDB) 的句柄。

[in] start

lpvBits 参数指向的数组中与设备无关的颜色数据的起始扫描行。

[in] cLines

在包含与设备无关的颜色数据的数组中找到的扫描行数。

[in] lpBits

指向 DIB 颜色数据的指针,存储为字节数组。 位图值的格式取决于 lpbmi 参数指向的 BITMAPINFO 结构的 biBitCount 成员。

[in] lpbmi

指向包含 DIB 相关信息的 BITMAPINFO 结构的指针。

[in] ColorUse

指示是否提供了 BITMAPINFO 结构的 bmiColors 成员,如果是,则指示 bmiColors 是否包含显式的红色、绿色、蓝色 (RGB) 值或调色板索引。 fuColorUse 参数必须是下列值之一。

含义
DIB_PAL_COLORS
颜色表由 hdc 参数标识的设备上下文的逻辑调色板中的 16 位索引数组组成。
DIB_RGB_COLORS
提供了颜色表,其中包含文本 RGB 值。

返回值

如果函数成功,则返回值为复制的扫描行数。

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

此值可以是以下值。

返回代码 说明
ERROR_INVALID_PARAMETER
一个或多个输入参数无效。

注解

当位图位成为系统调色板中的索引时,可获得最佳位图绘制速度。

应用程序可以通过调用 GetSystemPaletteEntries 函数来检索系统调色板颜色和索引。 检索颜色和索引后,应用程序可以创建 DIB。 有关详细信息,请参阅 系统调色板

仅当为 fuColorUse 参数设置了DIB_PAL_COLORS常量时,才会使用 hdc 参数标识的设备上下文;否则将忽略它。

当应用程序调用此函数时,不得在设备上下文中选择 由 hbmp 参数标识的位图。

扫描行必须在 DWORD 上对齐,RLE 压缩位图除外。

自下而上 DIB 的原点是位图的左下角;自上而下 DDB 的原点是位图的左上角。

Icm: 如果已通过调用 SetICMMode 启用了颜色管理,且 iEnableICM 参数设置为 ICM_ON,则执行颜色管理。 如果 lpbmi 指定的位图具有指定 gamma 和 endpoints 成员 的BITMAPV4HEADER ,或指定 gamma 和 endpoints 成员或 profileData 和 profileSize 成员的 BITMAPV5HEADER ,则调用会将位图的像素视为在这些成员描述的颜色空间中表示,而不是在设备上下文的源颜色空间中表示。

要求

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

另请参阅

BITMAPINFO

位图函数

位图概述

GetDIBits

GetSystemPaletteEntries