c++截取屏幕图片并保存(函数代码实现)

<strong>	//获取桌面窗体的CDC
	CDC *pdeskdc = GetDesktopWindow()->GetDC();
	CRect re;
	//获取窗体的大小
	GetDesktopWindow()->GetClientRect(&re);
	CBitmap bmp;
	bmp.CreateCompatibleBitmap(pdeskdc , re.Width() , re.Height());
	//创建一个兼容的内存画板
	CDC memorydc;
	memorydc.CreateCompatibleDC(pdeskdc);

	//选中画笔
	CBitmap *pold = memorydc.SelectObject(&bmp);

	//绘制图像
	memorydc.BitBlt(0,0,re.Width() ,re.Height(), pdeskdc , 0 ,0 ,SRCCOPY) ;

	//获取鼠标位置,然后加入鼠标图像
	CPoint po;
	GetCursorPos(&po);
	HICON hinco = (HICON)GetCursor();
	memorydc.DrawIcon(po.x-10 , po.y - 10 , hinco);
	//选中原来的画笔
	memorydc.SelectObject(pold);
	BITMAP bit;
	bmp.GetBitmap(&bit);
//	DWORD size = bit.bmWidth * bit.bmHeight ;

	//定义 图像大小(单位:byte)
	DWORD size = bit.bmWidthBytes * bit.bmHeight ;
	LPSTR lpdata = (LPSTR)GlobalAlloc(GPTR , size) ;

	//后面是创建一个bmp文件的必须文件头,想要了解能够參考msdn

	BITMAPINFOHEADER pbitinfo;
	pbitinfo.biBitCount = 24 ;
	pbitinfo.biClrImportant = 0;
	pbitinfo.biCompression = BI_RGB ;
	pbitinfo.biHeight = bit.bmHeight ;
	pbitinfo.biPlanes = 1 ;
	pbitinfo.biSize = sizeof(BITMAPINFOHEADER);
	pbitinfo.biSizeImage =size;
	pbitinfo.biWidth = bit.bmWidth;
	pbitinfo.biXPelsPerMeter = 0;
	pbitinfo.biYPelsPerMeter = 0 ;

	GetDIBits(pdeskdc->m_hDC , bmp , 0 , pbitinfo.biHeight , lpdata ,
		(BITMAPINFO*)&pbitinfo,DIB_RGB_COLORS);

	BITMAPFILEHEADER bfh;
	bfh.bfReserved1 = bfh.bfReserved2 = 0 ;
	bfh.bfType = ((WORD)('M'<< 8)|'B');
	bfh.bfSize = 54 + size ;
	bfh.bfOffBits = 54 ;

	//写入文件

	CFile file;
	if ( file.Open("1.bmp" , CFile::modeCreate|CFile::modeWrite) )
	{
		file.WriteHuge( &bfh , sizeof(BITMAPFILEHEADER) );
		file.WriteHuge(&pbitinfo , sizeof(BITMAPINFOHEADER));
		file.WriteHuge(lpdata , size);
		file.Close();
	}
	GlobalFree(lpdata);</strong>

c++截取屏幕图片并保存(函数代码实现),布布扣,bubuko.com

时间: 2024-12-19 22:13:14

c++截取屏幕图片并保存(函数代码实现)的相关文章

C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片

keybd_event API 函数功能:该函数合成一次击键事件.系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理程序调用keybd_event函数.在Windows NT中该函数己被使用SendInput来替代它. 函数原型:VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo): 参数: bVk:定义一个虚拟键码.键码值必须在1-254之间. bScan:定

task9图片文件处理函数代码

<?php /* upload($_FILES['pic']); 调用upload()函数 upload($file,$path=null,$type=array('image/png','image/jpeg','image/jpg','image/gif')){}; 定义upload函数 $file; 是一个数组变量 $file = array(5) { ["name"]=> string(8) "icon.png" ["type"

截取部分图片并显示-ios例子[转载]

截取部分图片并显示 在ios开发中,肯定会碰到需要截取部分图片的情况. 最终的效果类似这样: 先看最原始的示例,显示完整的图片 写了个最简单的读取图片并显示的代码,打算以此为开始,逐渐实现截取部分图片的功能. 代码主要是,在控制器代码中: - (void)loadView {     [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];     UI

Python+selenium之截图图片并保存截取的图片

本文转载:http://blog.csdn.net/u011541946/article/details/70141488 http://www.cnblogs.com/timsheng/archive/2012/09/05/2672651.html 介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.在selenium for Python中主要有三个截图方法,我们挑选其中最常用的一种. 截图技能对于测试人员来说应该是较为重要的一个技能. 在自

Word中截取部分内容并保存为jpg图片的方法

private void button1_Click(object sender, EventArgs e) { var appWord = new Microsoft.Office.Interop.Word.Application(); var doc = new Microsoft.Office.Interop.Word.Document(); object oMissing = System.Reflection.Missing.Value;//这个是什么东西,我始终没搞明白-_- //打

Xcode屏幕图片截取

#import "ViewController.h" @interface ViewController () //显示图片 @property (weak, nonatomic) IBOutlet UIImageView *imageView; //pan手指刚开始移动的位置 @property (nonatomic, assign) CGPoint startPoint; //pan手势结束的位置 @property (nonatomic, assign) CGPoint endP

截取控件并保存为图片(绝对好用)

原文:截取控件并保存为图片(绝对好用) /// <summary> /// 截取保存控件为PNG /// </summary> /// <param name="panel">你要截取的控件名</param> public void ScreenShotSave(FrameworkElement panel) { string rootFolder = Directory.GetCurrentDirectory() + @"\P

[DIV+CSS] set the screen capture Part 1 (div截取屏幕)

使用下面的代码来获取屏幕.用DIV加CSS 来控制. 使用mousemove来获取移动的时候DIV的变化, 效果图如下: 使用5个DIV来组成实现截图目的第一部分,现在只是实现了选择的第一部分. HTML 部分 1 <div id="bg" class="divShawd" onmousedown="mousedown()" onmouseup="mouseup()" onmousemove="mousemov

HTML5时代的纯前端上传图片预览及严格图片格式验证函数(转载)

原文地址:http://www.2cto.com/kf/201401/274752.html 一.要解决什么样的问题? 在写这个函数之前,有们童鞋在群里问如何纯前端严格验证图片格式.这在html5时代之前,那是不可能实现的,必须要上传到后台,由后台脚本读取文本流后进一步验证.这样就造成了一定的服务器资源浪费.但是html5时代,这个工作我们完全可以交给前端来做了. 另一方面,html5时代,许多我们原来的图片预览方案都失效了.究其原因,其实是现代浏览器出于对用户隐私的保护,file控件不再提供真