利用MFC截取对话框图像或者截取全屏图像
来源:互联网 发布:海关进出口数据查询 编辑:程序博客网 时间:2024/05/12 16:15
可能用到的库:
#include <afxwin.h>#include <windows.h>
代码:
void CScreenShotDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//CClientDC dc(this);//只截对话框,用这句HWND hwnd = ::GetDesktopWindow();//截整个屏幕,用从这往下4句HDC hdc = ::GetDC(hwnd);CDC dc;dc.Attach(hdc);CRect rc;//GetClientRect(&rc);//只截对话框,用这句rc.SetRect(0,0, GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ));//截整个屏幕,用这句int iBitPerPixel = dc.GetDeviceCaps(BITSPIXEL);int iWidth = rc.Width();int iHeight = rc.Height();CDC memDC;memDC.CreateCompatibleDC(&dc);CBitmap memBitmap, *oldBitmap;memBitmap.CreateCompatibleBitmap(&dc, iWidth, iHeight);oldBitmap = memDC.SelectObject(&memBitmap);memDC.BitBlt(0,0,iWidth, iHeight, &dc, 0,0,SRCCOPY);BITMAP bmp;memBitmap.GetBitmap(&bmp);FILE *fp = fopen("test2.bmp", "wb");BITMAPINFOHEADER bih;memset(&bih, 0, sizeof(bih));bih.biBitCount = bmp.bmBitsPixel;bih.biCompression = BI_RGB;//表示不压缩bih.biHeight = bmp.bmHeight;bih.biPlanes = 1;//位平面数,必须为1bih.biSize = sizeof(BITMAPINFOHEADER);bih.biSizeImage = bmp.bmWidthBytes * bmp.bmHeight;bih.biWidth = bmp.bmWidth;BITMAPFILEHEADER bfh;memset(&bfh, 0, sizeof(bfh));bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);bfh.bfSize = bfh.bfOffBits + bmp.bmWidthBytes * bmp.bmHeight;bfh.bfType = (WORD)0x4d42;//必须表示"BM"fwrite(&bfh, 1, sizeof(BITMAPFILEHEADER), fp);fwrite(&bih, 1, sizeof(bih), fp);byte * p = new byte[bmp.bmWidthBytes * bmp.bmHeight];GetDIBits(memDC.m_hDC, (HBITMAP)memBitmap.m_hObject, 0, iHeight, p, (LPBITMAPINFO)&bih, DIB_RGB_COLORS);fwrite(p, 1, bmp.bmWidthBytes * bmp.bmHeight, fp);delete [] p;fclose(fp);memDC.SelectObject(oldBitmap);}
效果:
全屏截取:
只截取对话框:
0 0
- 利用MFC截取对话框图像或者截取全屏图像
- 图像截取
- OpenCV + MFC 鼠标键盘控制截取图像
- AWT 截取屏幕图像
- c# 图像截取
- 图像的部分截取
- Cocos2d 截取屏幕图像。
- OpenCv截取图像
- Java 图像截取 缩放
- matlab截取图像
- opencv图像反转/截取
- 图像截取c代码
- canvas-图像截取
- Selenium-如何截取图像
- opencv 鼠标截取图像
- matlab截取图像一部分
- 利用VC实现AVI文件的图像截取
- 利用VC实现AVI文件的图像截取
- MySQL 基础
- 练习
- 4月13日,TestThread,每日20行。
- Java sdut acm 2787 加密术
- error,bias,var之间的关系
- 利用MFC截取对话框图像或者截取全屏图像
- php 单引号,双引号,反引号区别
- SpringMVC中使用CommonsMultipartResolver进行文件上传
- 初识MyBatis
- 计算机的启动过程———《x86汇编语言:从实模式到保护模式》读书笔记补遗01
- Java sdut acm 2246 时间日期格式转换
- c++:使用function模板和bind函数
- 执行完线程1再执行线程2 以及线程1和线程2共同执行
- 51nod算法马拉松23(飞越愚人节)