当前位置: 首页 > news >正文

BitBlt(wingdi.h)

The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context.

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

A handle to the destination device context.

目标设备上下文的句柄。

[in] x

The x-coordinate, in logical units, of the upper-left corner of the destination rectangle.

目标矩形左上角的 x 坐标(以逻辑单位表示)。

[in] y

The y-coordinate, in logical units, of the upper-left corner of the destination rectangle.

目标矩形左上角的 y 坐标(以逻辑单位表示)。

[in] cx

The width, in logical units, of the source and destination rectangles.

源矩形和目标矩形的宽度(以逻辑单位表示)。

[in] cy

The height, in logical units, of the source and the destination rectangles.

源矩形和目标矩形的高度(以逻辑单位表示)。

[in] hdcSrc

A handle to the source device context.

源设备上下文的句柄。

[in] x1

The x-coordinate, in logical units, of the upper-left corner of the source rectangle.

源矩形左上角的 x 坐标(以逻辑单位表示)。

[in] y1

The y-coordinate, in logical units, of the upper-left corner of the source rectangle.

源矩形左上角的 y 坐标(以逻辑单位表示)。

[in] rop

光栅操作代码。这些代码定义了如何将源矩形的颜色数据与目标矩形的颜色数据组合以实现最终颜色。

以下列表显示了一些常见的光栅操作代码。

表 1
ValueMeaning

BLACKNESS

使用与物理调色板中的索引 0 关联的颜色填充目标矩形。(对于默认的物理调色板,此颜色为黑色。)

CAPTUREBLT

在生成的图像中包括任何层叠在窗口顶部的窗口。默认情况下,图像仅包含您的窗口。请注意,这通常不能用于打印设备上下文。

DSTINVERT

反转目标矩形。

MERGECOPY

使用布尔 AND 运算符 将源矩形的颜色与当前在hdcDest中选择的画笔合并。

MERGEPAINT

使用布尔 OR 运算符将反转源矩形的颜色与目标矩形的颜色合并。

NOMIRRORBITMAP

防止位图被镜像。(No mirror bitmap)

NOTSRCCOPY

将反转的源矩形复制到目标。

NOTSRCERASE

使用布尔 OR 运算符组合源矩形和目标矩形的颜色,然后反转结果颜色。

PATCOPY

将hdcDest 中当前选择的画笔复制到目标位图中。(Paint Copy)

PATINVERT

使用布尔 XOR 运算符将 当前在hdcDest中选择的画笔的颜色与目标矩形的颜色相结合。

PATPAINT

使用布尔 OR 运算符将 当前在hdcDest中选择的画笔的颜色与反转源矩形的颜色相结合。此操作的结果通过使用布尔 OR 运算符与目标矩形的颜色组合。

SRCAND

使用布尔 AND 运算符组合源矩形和目标矩形的颜色。(Source And)

SRCCOPY

将源矩形直接复制到目标矩形。(Source Copy)

SRCERASE

使用布尔 AND 运算符将目标矩形的反转颜色与源矩形的颜色组合。

SRCINVERT

使用布尔 XOR 运算符组合源矩形和目标矩形的颜色。

SRCPAINT

使用布尔 OR 运算符组合源矩形和目标矩形的颜色。

WHITENESS

使用与物理调色板中的索引 1 关联的颜色填充目标矩形。(对于默认的物理调色板,此颜色为白色。)

返回值

如果函数成功,则返回值非零。

如果函数失败,则返回值为零。要获取扩展的错误信息,请调用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;
}

要在上下文中查看此示例,请参阅捕获图像。

要求

REQUIREMENTS
Minimum supported clientWindows 2000 Professional [desktop apps only]
Minimum supported serverWindows 2000 Server [desktop apps only]
Target PlatformWindows
Headerwingdi.h (include Windows.h)
LibraryGdi32.lib
DLLGdi32.dll

相关文章:

  • 位图是什么
  • DIB设备无关位图
  • CImage 类
  • CPaintDC 、CWindowDC、 CClientDC、 CDC的区别与联系
  • CWnd::Invalidate()用法
  • USB 协议分析之 HID 设备
  • XHR-XMLHttpRequest
  • 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
  • Windows CreateFont
  • SelectObject
  • OpenGL、OpenCL、OpenCV的区别与联系
  • Opencv3概述及框架介绍
  • 分卷压缩详解
  • adb下载安装及使用
  • Android开发调试必备 - DDMS
  • 自己简单写的 事件订阅机制
  • 「译」Node.js Streams 基础
  • 5、React组件事件详解
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • C++入门教程(10):for 语句
  • ComponentOne 2017 V2版本正式发布
  • css系列之关于字体的事
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript的使用你知道几种?(上)
  • js如何打印object对象
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Tornado学习笔记(1)
  • 从setTimeout-setInterval看JS线程
  • 坑!为什么View.startAnimation不起作用?
  • 前言-如何学习区块链
  • 浅谈Golang中select的用法
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 为视图添加丝滑的水波纹
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 7行Python代码的人脸识别
  • (AngularJS)Angular 控制器之间通信初探
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Python第六天)文件处理
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (三)模仿学习-Action数据的模仿
  • (算法)Travel Information Center
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .Net - 类的介绍
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 怎么循环得到数组里的值_关于js数组
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [AIGC] 如何建立和优化你的工作流?
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BZOJ2208][Jsoi2010]连通数
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [C++]模板与STL简介