### 函数功能

该函数将DIB中矩形区域内像素使用的颜色数据拷贝到指定的目标矩形中。如果目标矩形比源矩形大小要大，那么函数对颜色数据的行和列进行拉伸，以与目标矩形匹配。如果目标矩形大小要比源矩形小，那么该函数通过使用指定的光栅操作对行列进行压缩。

### 函数原型

int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, CONST VOID *lpBits, CONST BITMAPINFO * lpBitsInfo, UINT iUsage, DWORD dwRop)；

### 参数

hdc：指向目标设备环境的句柄。
XDest：指定目标矩形左上角位置的X轴坐标，按逻辑单位来表示坐标。
YDest：指定目标矩形左上角的Y轴坐标，按逻辑单位表示坐标。
nDestWidth：指定目标矩形的宽度。
nDestHeight：指定目标矩形的高度。
XSrc：指定DIB中源矩形（左上角）的X轴坐标，坐标以像素点表示。
YSrc：指定DIB中源矩形（左上角）的Y轴坐标，坐标以像素点表示。
nSrcWidth：按像素点指定DIB中源矩形的宽度。
nSrcHeight：按像素点指定DIB中源矩形的高度。
lpBits：指向DIB位的指针，这些位的值按字节类型数组存储，有关更多的信息，参考下面的备注一节。
lpBitsInfo：指向BITMAPINFO结构的指针，该结构包含有关DIB方面的信息。
iUsage：表示是否提供了BITMAPINFO结构中的成员bmiColors，如果提供了，那么该bmiColors是否包含了明确的RGB值或索引。参数iUsage必须取下列值，这些值的含义如下：
DIB＿PAL＿COLOR：表示该数组包含对源设备环境的逻辑调色板进行索引的16位索引值。
DIB＿RGB＿COLORS：表示该颜色表包含原义的KGB值，若想了解更多的信息，请参考下面备注一节。
dwRop：指定源像素点、目标设备环境的当前刷子和目标像素点是如何组合形成新的图像。若想了解更多信息，请参考下面的备注一节。

### 返回值

如果函数执行成功，那么返回值是拷贝的扫描线数目，如果函数执行失败，那么返回值是GDI＿CRROR。
Windows NT：若想获取更多错误信息，请调用GetLastError函数。
Windows 98、Windows NT 5.0及以后版本：如果设备驱动程序不支持传送给StretchDIBits的JPEG文件格式的图像，则该函数将失败，并返回GEI_ERROR。
备注：自底向上的DIB的起始点为左下角，自顶向下DIB的起始点为左上角。
如果nSrcWidth和nDestWidth参数的符号不同。或是nSrcHeight和nDesHeight参数的符号不同。那么函数StretchDIBits将创建位图的镜像。如果NsrcWidth和NdestWidth符号不同，那么函数将沿着X轴创建位图镜像。如果NsrcHeight和NdestHeight符号不同，那么函数将沿着Y轴创建位图镜像。
对于Windows 98、Windows NT 5.0及以后版本：该函数允许将JPEG图像用作源图像，每个参数如何使用其实仍是一样的。
如果BITMAPINFOHEADER结构中的成员biCompression为BI_JPEG，那么参数lpBits指向的是一个包含JPEG图像的缓冲区。BITMAPINFOHEADER结构中的biSizeImage成员指定了该缓冲区的大小。参数iUsage必须设为DIB_RGB_COLORS。dwRop必须设为SRCCOPY。
如果BITMAPV4HEADER结构中的成员bV 4Compression为BI_JPEG，那么参数lpBits指向的是一个包含JPEG图像的缓冲区。BITMPV4HEADER结构中的bV4SizeImage成员指定了该缓冲区的大小。参数iUsage必须设为DIB_RGB_COLORS。参数dwRop必须设为SRCCOPY。
如果BITMAPV5HEADER结构中的成员bV 5Compression为BI_JPEG，那么参数lpBits指向的是一个包含JPEG图像的缓冲区。BITMPV5HEADER结构中的bV5SizeImage成员指定了该缓冲区的大小。参数iUsage必须设为DIB_RGB_COLORS。dwRop必须设为SRCCOPY。
为确保打印时可以有正确的图元文件假脱机操作。应用程序应在调用StretchDIBits函数之前调用CHECKJPEGFORMAT转义符，以确认打印机识别JPEG图像。
ICM：执行颜色管理。如果指定的BITMAPINFO结构中的bmiHeader不包含BITMAPV4HEADER或BITMAPV5HEADER，那么当前设备环境的颜色配置（profile）被用作源颜色配置（profile）。如果没有颜色档案，那么就使用RGB。如果指定的BITMAPINFO结构中的成员bmiHeader包含了BITMAPV4HEADER或BITMAPV5HEADER，那么将把位图标头中指定的颜色配置（profile）用作源颜色配置。

### 速查

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