1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c++ 截取屏幕图片并保存

c++ 截取屏幕图片并保存

时间:2020-04-05 14:37:02

相关推荐

c++ 截取屏幕图片并保存

屏幕捕捉技术第一步就是抓取屏幕的桌面

虽然print screen键可以,但是在实际中就有点不适用了

下面的代码可以拷贝到一个函数里面,执行就可以生成一个获取屏幕的bmp文件了

//获取桌面窗口的CDCCDC *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文件的必须文件头,想要了解可以参考msdnBITMAPINFOHEADER 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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。