StretchDIBits

该函数将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:指定源像素点、目标设备环境的当前刷子和目标像素点是如何组合形成新的图像。
------------------------------------------------------------------------------------------------------------------------------------------

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
     使所有输出变成白色。
------------------------------------------------------------------------------------------------------------------------------------------
  
       返回值:如果函数执行成功,那么返回值是拷贝的扫描线数目,如果函数执行失败,那么返回值是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。


posted on 2012-12-27 10:11  龙猫先生  阅读(424)  评论(0编辑  收藏  举报

导航