StretchDIBits
该函数将DIB中矩形区域内像素使用的颜色数据拷贝到指定的目标矩形中。如果目标矩形比源矩形大小要大,那么函数对颜色数据的行和列进行拉伸,以与目标矩形匹配。如果目标矩形大小要比源矩形小,那么该函数通过使用指定的光栅操作对行列进行压缩。
返回值:如果函数执行成功,那么返回值是拷贝的扫描线数目,如果函数执行失败,那么返回值是GDI_ERROR。
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。
为确保打印时可以有正确的图元文件假脱机操作。应用程序应在调用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。
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:指定源像素点、目标设备环境的当前刷子和目标像素点是如何组合形成新的图像。
------------------------------------------------------------------------------------------------------------------------------------------
dwRop
Specifies the raster operation to be performed. Raster operation codes define how GDI combines colors in output operations that involve a current brush, a possible source bitmap, and a destination bitmap. This parameter may be one of the following values:
指定光栅操作。光栅操作模式说明了GDI是如何组合输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。可以为下列值之一:
-
BLACKNESS
Turns all output black.
BLACKNESS将所有输出变为黑色。 -
DSTINVERT
Inverts the destination bitmap.
DSTINBERT反转目标位图颜色。 -
MERGECOPY
Combines the pattern and the source bitmap using the Boolean AND operator.
MERGECOPY使用AND运算符组合模板与源位图的颜色。 -
MERGEPAINT
Combines the inverted source bitmap with the destination bitmap using the Boolean OR operator.
MERGEPAINT使用OR运算符组合源位图的反色与目标矩形的颜色。 -
NOTSRCCOPY
Copies the inverted source bitmap to the destination.
NOTSRCCOPY将源位图的反色拷贝到目标矩形中。 -
NOTSRCERASE
Inverts the result of combining the destination and source bitmaps using the Boolean OR operator.
NOTSRCERASE反转使用OR运算符组合源位图与目标矩形后得到的颜色 -
PATCOPY
Copies the pattern to the destination bitmap.
PATCOPY将模板颜色拷贝到目标矩形中。 -
PATINVERT
Combines the destination bitmap with the pattern using the Boolean XOR operator.
PATINVERT使用XOR运算符组合目标矩形与模板颜色。 -
PATPAINT
Combines the inverted source bitmap with the pattern using the Boolean OR operator. Combines the result of this operation with the destination bitmap using the Boolean OR operator.
PATPAINT使用OR运算符组合模板与源位图的反色。再使用OR运算符将该操作结果与目标矩形组合。 -
SRCAND
Combines pixels of the destination and source bitmaps using the Boolean AND operator.
SRCAND使用AND运算符组合源位图和目标位图的像素。 -
SRCCOPY
Copies the source bitmap to the destination bitmap.
SRCCOPY将源位图拷贝到目标位图。 -
SRCERASE
Inverts the destination bitmap and combines the result with the source bitmap using the Boolean AND operator.
SRCERASE反转目标矩形的颜色,再使用AND运算符将该结果与源位图组合。 -
SRCINVERT
Combines pixels of the destination and source bitmaps using the Boolean XOR operator.
SRCINVERT使用XOR运算符组合源位图和目标位图的像素。 -
SRCPAINT
Combines pixels of the destination and source bitmaps using the Boolean OR operator.
SRCPAINT使用OR运算符组合源位图和目标位图的像素 -
WHITENESS
Turns all output white.
WHITENESS使所有输出变成白色。