StretchBlt 函数 (wingdi.h)
StretchBlt 函数将位图从源矩形复制到目标矩形,并在必要时拉伸或压缩位图以适应目标矩形的尺寸。 系统根据当前在目标设备上下文中设置的拉伸模式拉伸或压缩位图。
语法
BOOL StretchBlt(
[in] HDC hdcDest,
[in] int xDest,
[in] int yDest,
[in] int wDest,
[in] int hDest,
[in] HDC hdcSrc,
[in] int xSrc,
[in] int ySrc,
[in] int wSrc,
[in] int hSrc,
[in] DWORD rop
);
参数
[in] hdcDest
目标设备上下文的句柄。
[in] xDest
目标矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] yDest
目标矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] wDest
目标矩形的宽度(以逻辑单元表示)。
[in] hDest
目标矩形的高度(以逻辑单元表示)。
[in] hdcSrc
源设备上下文的句柄。
[in] xSrc
源矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] ySrc
源矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] wSrc
源矩形的宽度(以逻辑单元表示)。
[in] hSrc
源矩形的高度(以逻辑单元表示)。
[in] rop
要执行的光栅操作。 光栅操作代码定义系统如何在涉及画笔、源位图和目标位图的输出操作中组合颜色。
有关 IOPS) (常见光栅操作代码的列表,请参阅 BitBlt 。 请注意,捕获BLT ROP 通常不能用于打印设备上下文。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。
注解
StretchBlt 在内存中拉伸或压缩源位图,然后将结果复制到目标矩形。 此位图可以是兼容位图 (DDB) ,也可以是 CreateDIBSection 的输出。 在拉伸或压缩发生后,将合并图案或目标像素的颜色数据。
记录增强型图元文件时, (发生错误,如果源设备上下文标识增强型图元文件设备上下文,则函数返回 FALSE) 。
如果指定的光栅操作需要画笔,系统会使用当前在目标设备上下文中选择的画笔。
通过使用当前为目标设备上下文指定的转换来转换目标坐标;通过使用当前为源设备上下文指定的转换来转换源坐标。
如果源转换具有旋转或剪切,则会发生错误。
如果目标位图、源位图和图案位图的颜色格式不同, StretchBlt 会将源位图和图案位图转换为与目标位图匹配。
如果 StretchBlt 必须将单色位图转换为彩色位图,则会将白色位 (1) 设置为背景色,将黑色位设置为 (0) 前景色。 若要将颜色位图转换为单色位图,它将背景色匹配的像素设置为白色 (1) ,并将所有其他像素设置为黑色 (0) 。 在转换中将使用彩色设备上下文的前景色和背景色。
如果 nWidthSrc 和 nWidthDest 参数的符号或者 nHeightSrc 和nHeightDest 参数不同,StretchBlt 将创建位图的镜像图像。 如果 nWidthSrc 和 nWidthDest 具有不同的符号,则 函数会沿 x 轴创建位图的镜像图像。 如果 nHeightSrc 和 nHeightDest 具有不同的符号,则 函数将沿 y 轴创建位图的镜像图像。
并非所有设备都支持 StretchBlt 函数。 有关详细信息,请参阅 GetDeviceCaps。
Icm: 发生 blit 操作时,不执行颜色管理。
在多监视器系统中使用时, hdcSrc 和 hdcDest 必须引用同一设备,否则函数将失败。 若要在不同设备的 DC 之间传输数据,请通过调用 GetDIBits 将内存位图转换为 DIB。 若要向第二台设备显示 DIB,请调用 SetDIBits 或 StretchDIBits。
示例
有关示例,请参阅 缩放图像。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | Gdi32.lib |
DLL | Gdi32.dll |