### 函数功能

该函数使用指定的DIB位图中发现的颜色数据来设置位图中的像素。

### 函数原型

int SetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits,CONST BITMAPINFO *lpbmi, UINT fuColorUse)；

### 参数

hdc：指向设备环境中的句柄。
hbmp：指向位图的句柄。函数要使用指定DIB中的颜色数据对该位图进行更改。
uStartScan：为参数lpvBits指向的数组中的、与设备无关的颜色数据指定起始扫描线。
cScanLines：为包含与设备无关的颜色数据的数组指定扫描线数目。
lpvBits：指向DIB颜色数据的指针，这些数据存储在字节类型的数组中，位图值的格式取决于参数lpbmi指向的BITMAPINFO结构中的成员biBitCount。
lpbmi：指向BITMAPINFO数据结构的指针，该结构包含有关DIB的信息。
fuColorUse：指定是否提供了BITMAPINFO结构中的bmiColors成员，如果提供了，那么bmiColors是否包含了明确的RGB值或调色板索引。参数fuColorUse必须取下列值，各值的含义为：
DIB_PAL_COLORS：颜色表由16bit的索引值数组组成。这些值可以对由hdc参数标识的设备环境中的逻辑调色板进行索引。
DIB_RGB_COLORS：提供了颜色表，并且表中包含了原义的RGB值。

### 返回值

如果函数成功，那么返回值就是复制的扫描线数；如果函数失败，那么返回值是0。
Windows NT：若想获得更多错误信息，请调用GetLastError函数。
备注：当位图的位要索引到系统调色板时，可获取最佳的位图绘制速度。
应用程序可能通过调用GetSystemPaletteEntries函数来检索系统调色板颜色和索引。在检索到颜色和索引值之后，应用程序可以创建DIB，有关更多的信息，请参考系统调色板(System Paletle)。
只有在参数fuColorUse设置为DIB_PAL_COLORS常量时才使用参数hdc标识的设备环境，否则会忽略hdc参数中的值。
在应用程序调用该函数时，必须把由参数hbmp标识的位图选入到设备环境中。
自底向上的DIB位图的起始点是该位图的左下角处，自顶向下的DIB位图的起源点在该位图的左上角处。
ICM：颜色管理照样进行。如果指定的BITMAPINFO结构不是BITMAPV4HEADER或BITMAPV5HEADER，那么当前设备环境的颜色配置（profile）就用作源颜色配置。如果BITMAPINFO结构不是BITMAPV4HEADER或BITMAPV5HEADER，那么使用RGB颜色。如果指定的BITMAPINFO结构是BITMAPV4HEADER或BITMAPV5HEADER，那么与该位图有关的颜色配置(profile)被用作源颜色。

### 速查

Windows NT：3.1及以上版本；Windows：95及以上版本；Windows CE：不支持；头文件：wingdi.h：库文件：gdi32.lib。