SetDIBitsToDevice函数使用来自设备无关位图(DIB)的颜色数据设置与目标设备上下文关联的设备上指定矩形中的像素。
int SetDIBitsToDevice(
HDC 【HDC】, | //设备上下文的句柄 |
INT 【XDest】, | // dest的左上角的x坐标。RECT。 |
INT 【YDest】, | // dest的左上角的y坐标RECT。 |
DWORD 【dwWidthmt】, | //源矩形宽度 |
DWORD 【//源矩形高度】, | //源矩形高度 |
INT 【XSrc】, | //源代码左下角的x坐标。 |
INT 【YSrc】, | //源代码左下角的y坐标。 |
UINT 【uStartScan】, | //数组中的第一个扫描行 |
UINT 【cScanLines】, | //扫描行数 |
CONST VOID *【lpvBits】, | //具有DIB位数组的地址 |
CONST BITMAPINFO *【//具有位图信息的结构地址。】, | //具有位图信息的结构地址。 |
UINT 【fuColorUse】 | // RGB或调色板索引 |
); |
参数
【HDC】
标识设备上下文。
【XDest】
指定目标矩形左上角的x坐标(以逻辑为单位)。
【YDest】
指定目标矩形左上角的y坐标(以逻辑为单位)。
【dwWidthmt】
指定DIB的逻辑单位宽度。
【//源矩形高度】
指定DIB的高度(以逻辑为单位)。
【XSrc】
指定DIB左下角的x坐标(以逻辑为单位)。
【YSrc】
以逻辑单位指定DIB左下角的y坐标。
【uStartScan】
指定DIB中的起始扫描行。
【cScanLines】
指定由【lpvBits】参数指向的数组中包含的DIB扫描线数。
【lpvBits】
指向DIB颜色数据存储为字节数组。
【//具有位图信息的结构地址。】
指向包含DIB信息的BITMAPINFO结构。
【fuColorUse】
指定BITMAPINFO结构的bmiColors成员是否在显示板中包含显式的红色,绿色,蓝色(RGB)值或索引。【fuColorUse】参数必须是以下值之一:
值 | 含义 |
DIB_PAL_COLORS | 颜色表由当前选择的逻辑调色板中的16位索引的数组组成。 |
DIB_RGB_COLORS | 颜色表包含文字RGB值。 |
返回值
如果功能成功,则返回值是设置的扫描线数。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
当位图位是系统调色板的索引时,获得最佳位图绘制速度。
应用程序可以通过调用GetSystemPaletteEntries函数来检索系统调色板的颜色和索引。在检索颜色和索引后,应用程序可以创建DIB。有关系统调色板的更多信息,请参阅颜色.
自下而上的DIB的起源是位图的左下角;自顶向下的DIB的原点是左上角。
为了减少从设备表面上与设备无关的大尺寸位图设置位所需的内存量,应用程序可以通过重复调用SetDIBitsToDevice来对输出进行分段,每次将位图的不同部分放入【lpvBits】数组中。【uStartScan】和【cScanLines】参数的值标识【lpvBits】数组中包含的位图的部分。
如果在全屏MS-DOS会话在前台运行时,由后台运行的进程调用SetDIBitsToDevice函数返回错误。
也可以看看
BITMAPINFO, GetSystemPaletteEntries, SetDIBits, StretchDIBits