跟我一起玩Win32开发(22):抓取屏幕

本文介绍了如何在Win32环境下使用BitBlt和StretchBlt函数来抓取屏幕内容,并将其复制到窗口的客户区域。讲解了获取屏幕和窗口设备上下文(DC)、屏幕尺寸、窗口客户区尺寸的方法,以及 StretchBlt 的用法,包括源和目标区域参数及复制标志。最后讨论了不同复制标志导致的反色效果及其原理。
摘要由CSDN通过智能技术生成

关于如何拷贝屏幕并保存,这里已经有现成的例子,我也不必去Copy人家了,我一向不喜欢Copy。这里有一个完整的例子,可以看看。

http://msdn.microsoft.com/EN-US/library/windows/desktop/dd183402(v=vs.85).aspx

 

把屏幕的内容复制到窗口的客户区域中,通常会用BitBlt函数,函数的功能是把一块颜色数据从一个DC复制到另一个DC,这个我也不知道怎么翻译才能通俗一点。这样说吧,就是从源设备上下文的图形表面截取一个矩形区域并且复制到另一个设备上下文的区域中。就像我们要做一个截屏工具一样,把屏幕的一部分内容复制到窗口上。

下面呢,我用另一个函数来进行拷贝——StretchBlt函数,这个函数与BitBlt差不多,不过,它有一点,就是可以根据目标的区域对源图像进行拉伸。

注意看代码。

			{
				// 屏幕的DC
				HDC hdcScreen = GetDC(NULL);
				// 本窗口的DC
				HDC hdcWindow = GetDC(hWnd);
				// 屏幕的宽度
				int scrWidth = GetSystemMetrics(SM_CXSCREEN);
				// 屏幕的高度
				int scrHeight = GetSystemMetrics(SM_CYSCREEN);
				// 窗口的客户区域
				RECT rectClient;
				GetClientRect(hWnd, &rectClient);
			
  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值