描述
StretchDIBits函数将DIB中的像素矩形的颜色数据复制到指定的目标矩形。如果目标矩形大于源矩形,则该函数会拉伸颜色数据的行和列以适合目标矩形。如果目标矩形小于源矩形,则此函数通过使用指定的栅格操作来压缩行和列。
Windows 98 / Me,Windows 2000 / XPVista / Windows 7:StretchDIBits已被扩展为允许将JPEG或PNG图像作为源图像传递。
C++ 语法
int StretchDIBits( __in HDC hdc, __in int XDest, __in int YDest, __in int nDestWidth, __in int nDestHeight, __in int XSrc, __in int YSrc, __in int nSrcWidth, __in int nSrcHeight, __in const VOID *lpBits, __in const BITMAPINFO *lpBitsInfo, __in UINT iUsage, __in DWORD dwRop ); |
PowerBASIC 语法
FUNCTION StretchDIBits( _ BYVAL hdc AS DWORD, _ BYVAL XDest AS LONG, _ BYVAL YDest AS LONG, _ BYVAL nDestWidth AS LONG, _ BYVAL nDestHeight AS LONG, _ BYVAL XSrc AS LONG, _ BYVAL YSrc AS LONG, _ BYVAL nSrcWidth AS LONG, _ BYVAL nSrcHeight AS LONG, _ BYREF lpBits AS ANY, _ BYREF lpBitsInfo AS BITMAPINFO, _ BYVAL iUsage AS DWORD, _ BYVAL dwRop AS DWORD _ ) AS LONG |
参数
hdc
[in]处理目标设备上下文。
XDest
in]指定目标矩形左上角的x坐标(以逻辑为单位)。
YDest
[in]指定目标矩形左上角的y坐标(以逻辑为单位)。
nDestWidth
[in]指定目标矩形的逻辑单位宽度。
nDestHeight
[in]指定目标矩形的高度(以逻辑为单位)。
XSrc
[in]指定DIB中源矩形的x坐标(以像素为单位)。
YSrc
[in]指定DIB中源矩形的y坐标(以像素为单位)。
nSrcWidth
[in]指定DIB中源矩形的宽度(以像素为单位)。
nSrcHeight
[in]指定DIB中源矩形的高度(以像素为单位)。
lpBitsInfo
[in]指向包含DIB信息的BITMAPINFO结构的指针。
iUsage
[in]指定是否提供BITMAPINFO结构的bmiColors成员,如果是,是否bmiColors包含明确的红色,绿色,蓝色(RGB)值或索引。iUsage参数必须是以下值之一。
值 |
含义 |
DIB_PAL_COLORS |
该数组包含16位索引到源设备上下文的逻辑调色板。 |
DIB_RGB_COLORS |
颜色表包含文字RGB值。 |
有关详细信息,请参阅备注部分。
dwRop
[in]指定源像素,目标设备上下文的当前画笔和目标像素如何组合以形成新映像。有关详细信息,请参阅以下备注部分。
返回值
如果功能成功,则返回值是复制的扫描行数。
如果函数失败,返回值为GDI_ERROR。
Windows NT / 2000 / XPVista / Windows 7:要获取扩展错误信息,请调用GetLastError.
Windows 98 / Me,Windows 2000 / XPVista / Windows 7:如果驱动程序不支持传递给StretchDIBits的JPEG或PNG文件镜像,则该函数将失败并返回GDI_ERROR。如果发生故障,则应用程序必须自行退回到JPEG或PNG支持,才能将映像解压缩到位图中,然后将位图传递给StretchDIBits.
备注
自下而上的DIB的起源是左下角;自顶向下的DIB的原点是左上角。
StretchDIBits如果nSrcWidth和nDestWidth参数的符号,或nSrcHeight和nDestHeight参数不同,则会创建位图的镜像。如果nSrcWidth和nDestWidth具有不同的符号,则该函数将沿x轴创建位图的镜像。如果nSrcHeight和nDestHeight具有不同的符号,则该函数将沿y轴创建位图的镜像。
Windows 98 / Me,Windows 2000 / XPVista / Windows 7:此函数允许将JPEG或PNG图像作为源图像传递。如何使用每个参数保持不变,除了:
· | 如果BITMAPINFOHEADER的biCompression成员为BI_JPEG或BI_PNG,则LP位元ca分别指向包含JPEG或PNG图像的缓冲区。BITMAPINFOHEADER结构的biSizeImage成员指定缓冲区的大小。必须将iUsage参数设置为DIB_RGB_COLORS。必须将dwRop参数设置为SRCCOPY。 |
· | 为确保在打印时正确的元文件假脱机,应用程序必须调用CHECKJPEGFORMAT或CHECKPNGFORMAT转义符来验证打印机是否在调用StretchDIBits之前识别JPEG或PNG图像。 |
ICM:如果通过调用SetICMMode使iEnableICM参数设置为ICM_ON启用了颜色管理,则执行颜色管理。如果lpBitsInfo指定的位图具有指定伽玛和端点成员的BITMAPV4HEADER或指定伽玛和端点成员或profileData和profileSize成员的BITMAPV5HEADER,则该调用将位图的像素视为在这些成员描述的颜色空间中表达,而不是在设备上下文的源颜色空间中。
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)