函数功能:该函数使用DIB位图和颜色数据对与目标设备环境相关的设备上的指定矩形中的像素进行设置。对于Windows 98和Windows NT 5.0,函数SetDIBitsToDevice已经得到扩展,它允许JPEG图像作为源图像。
1 2 3 |
int SetDIBitsToDevice(HDC hdc, int xDest, int Ydest, DWORD dwWidth, DWORD dwHeight, intXSrc, int Ysrc, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits, CONST BITMAPINFO *lpbmi, UINT fuColorUse); |
参数:
hdc:设备环境句柄。
XDest:指定目标矩形左上角的X轴坐标,按逻辑单位表示坐标。
YDest:指字目标矩形左上角的Y轴坐标,按逻辑单位表示坐标。
dwWidth:指定DIB的宽度,按逻辑单位表示宽度。
dwHeight:指定DIB的高度,按逻辑单位表示高度。
XSrc:指定DIB位图左下角的X轴坐标,按逻辑单位表示坐标。
YSrc:指定DIB位图左下角的Y轴坐标,按逻辑单位表示坐标。
uScanLines:指定DIB中的起始扫描线。
cScanLInes:指定参数lpvBits指向的数组中包含的DIB扫描线数目。
lpvBits:指向存储DIB颜色数据的字节类型数组的指针。关于更多的信息,请参考下面的备注一节。
lpbmi:指向BITMAPINFO结构的指针,该结构包含有关DIB的信息。
fuColorUse:指向BITMAPINFO结构中的成员bmiColors是否包含明确的RGB值或对调色板进行索引的值。有关更多的信息,请参考下面的备注部分。
参数fuColorUse必须是下列值之一,这些值的含义如下:
DIB_PAL_COLORS:表示颜色表由16位的索引值数组组成,利用这些值可对当前选中的逻辑调色板进行索引。
DIB_RGB_COLORS:表示颜色表包含原义的RGB值。
返回值:如果函数执行成功,那么返回值是设置的扫描线数目;如果函数失败,那么返回值为0。
Windows NT:若想获得更多错误信息,请调用GetLastError函数。
Windows 98、NT 5.0及以后版本:如果驱动程序不支持传给SetDIBitsToDevice函数的JPEG文件图像,那么函数将失败,并返回GDI_ERROR。
备注:当位图的位是对系统调色板进行索引时,可获得最佳的位图绘制速度。应用程序可以通过调用GetSystemPaletteEntries函数来检索系统调色板的颜色和索引值。在检索到颜色和索引值之后,应用程序可以创建DIB。有关系统调色板方面更多的信息,请参考颜色方面的内容。
自底向上的DIB位图的起始点是在该位图的左下角,而自顶向下的DIB的起始点是在左上角。
为了减少对大型DIB位图的位进行设置所需的内存量,应用程序可以通过重复调用SetDIBitsToBevice。每次将位图的不同部分放入到lpvBits数组来将输出捆绑在一起。参数uStartScan和cScanLines的值标明了lpvBits数组中包含的位图部分。在有一个全屏幕MS DOS会话在前台运行时,如果正在后台运行的一个进程调用了SetDIBitsToDevice函数,那么该函数会返回一个错误。
对于Windows 98、Windows NT 5.0及以后版本;如果BITMAPINFOHEADER中的成员biCompression为BI_JPEG,那么lpvBits指向一个包含JPEG图像的缓冲区。BITMAPINFOHEADER结构中的成员biSizeimage指定了该缓冲区的大小。参数fuColorUse必须设置为DIB_RGB_COLORS。如果BITMAPV4HEADER中的成员bV4SizeImage指定了该缓冲区的大小。参数fuColorUse必须设为DIB_RGB-COLORS。如果BITMAPV5HEADER结构中的成员bV5Compression为BI_JPEG,那么参数lpbBits指向一个包含JPEG图像的缓冲区。DITMAPV5HEADER结构中的成员bV5SizeImage指定了该缓冲区的大小,参数fuColorUse必须设为DIB_RGB_COLORS。
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。