bitBlt 函数 (wingdi.h)
BitBlt 函数执行与像素矩形相对应的颜色数据的位块传输,从指定的源设备上下文传输到目标设备上下文。
语法
BOOL BitBlt(
[in] HDC hdc,
[in] int x,
[in] int y,
[in] int cx,
[in] int cy,
[in] HDC hdcSrc,
[in] int x1,
[in] int y1,
[in] DWORD rop
);
参数
[in] hdc
目标设备上下文的句柄。
[in] x
目标矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] y
目标矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] cx
源矩形和目标矩形的宽度(以逻辑单位为单位)。
[in] cy
源矩形和目标矩形的高度(以逻辑单位为单位)。
[in] hdcSrc
源设备上下文的句柄。
[in] x1
源矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] y1
源矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] rop
光栅操作代码。 这些代码定义如何将源矩形的颜色数据与目标矩形的颜色数据相结合,以实现最终颜色。
以下列表显示了一些常见的光栅操作代码。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
BitBlt 仅在目标 DC 上执行剪裁。
如果旋转或剪切转换在源设备上下文中生效, BitBlt 将返回错误。 如果源设备上下文中存在其他转换 (并且匹配转换在目标设备上下文) 中无效,则根据需要拉伸、压缩或旋转目标设备上下文中的矩形。
如果源和目标设备上下文的颜色格式不匹配, BitBlt 函数会将源颜色格式转换为与目标格式匹配。
记录增强型图元文件时,如果源设备上下文标识增强型图元文件设备上下文,则会发生错误。
并非所有设备都支持 BitBlt 函数。 有关详细信息,请参阅 GetDeviceCaps 函数中的RC_BITBLT光栅功能条目以及以下函数: MaskBlt、 PlgBlt 和 StretchBlt。
如果源和目标设备上下文表示不同的设备,BitBlt 将返回错误。 若要在不同设备的 DC 之间传输数据,请通过调用 GetDIBits 将内存位图转换为 DIB。 若要向第二台设备显示 DIB,请调用 SetDIBits 或 StretchDIBits。
Icm: 发生 blits 时,不执行颜色管理。
示例
下面的代码示例演示如何使用 BitBlt。
if (!BitBlt(hdcMemDC,
0, 0,
rcClient.right - rcClient.left, rcClient.bottom - rcClient.top,
hdcWindow,
0, 0,
SRCCOPY))
{
MessageBox(hWnd, L"BitBlt has failed", L"Failed", MB_OK);
goto done;
}
若要在上下文中查看此示例,请参阅 捕获图像。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | Gdi32.lib |
DLL | Gdi32.dll |