mfc截屏代码(截屏的代码)
admin 发布:2022-12-19 23:14 143
今天给各位分享mfc截屏代码的知识,其中也会对截屏的代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式?
- 2、关于MFC截图的问题
- 3、mfc如何实现截图文字识别
- 4、满意可以继续加分,MFC怎么截取指定区域的图像
- 5、用MFC做了一个浏览器,请问如何对网页进行截屏??谢谢
如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式?
代码 大概就是这样 有几个关键函数仔细一下,要是要完整代码呢留言
CDC memDC;
CBitmap memBitmap,*pOldBitmap;
CWindowDC dc(GetDesktopWindow());
memDC.CreateCompatibleDC(dc);
int nWidth,nHeight;
/* nWidth=GetSystemMetrics(SM_CXSCREEN);
nHeight=GetSystemMetrics(SM_CYSCREEN);*/
CRect rect;
GetDesktopWindow()-GetWindowRect(rect);
ClientToScreen(rect);
nWidth=rect.Width();
nHeight=rect.Height();
memBitmap.CreateCompatibleBitmap(dc,nWidth,nHeight);
pOldBitmap=memDC.SelectObject(memBitmap);
// memDC.StretchBlt(0,0,rect.Width(),rect.Height(),dc,0,0,rect.Width(),rect.Height(),SRCCOPY);
memDC.BitBlt(0,0,nWidth,nHeight,dc,0,0,SRCCOPY);
BITMAPFILEHEADER BMFhead;
BITMAPINFOHEADER BMIhead;
BMFhead.bfReserved1=0;
BMFhead.bfReserved2=0;
BMFhead.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BMFhead.bfSize=BMFhead.bfOffBits+nWidth*nHeight*4;
BMFhead.bfType=0x4d42;
BMIhead.biBitCount=32;
BMIhead.biClrImportant=0;
BMIhead.biClrUsed=0;
BMIhead.biSizeImage=0;
BMIhead.biXPelsPerMeter=0;
BMIhead.biYPelsPerMeter=0;
BMIhead.biCompression=BI_RGB;
BMIhead.biHeight=nHeight;
BMIhead.biPlanes=1;
BMIhead.biSize=sizeof(BITMAPINFOHEADER);
BMIhead.biWidth=nWidth;
DWORD dwSize=nWidth*nHeight*4;
BYTE *pData=new BYTE[dwSize];
GetDIBits(memDC.m_hDC,(HBITMAP)memBitmap.m_hObject,0,nHeight,pData,(LPBITMAPINFO)BMIhead,DIB_RGB_COLORS);
CFile file;
file.Open("test.bmp",CFile::modeCreate | CFile::modeWrite);
file.Write(BMFhead,sizeof(BITMAPFILEHEADER));
file.Write(BMIhead,sizeof(BITMAPINFOHEADER));
file.Write(pData,dwSize);
file.Close();
memDC.SelectObject(pOldBitmap);
MessageBox("绘图完毕");
GetParent()-ShowWindow(SW_SHOW);
关于MFC截图的问题
os 这个函数中,那么
OnUpdataPos 函数可以这样写:
OnUpdataPos()
{
CDC* pDC = GetDC() ; //这个语句一定要有
pDC-BitBlt(...); //利用pDC输出车子,注意,如果不用pDC而用其它DC, 那么屏幕上(也就是程序的客户区可能不会显示图像)
InvalidateRect(); //将触发 OnDraw(),更新整个画面 ,不然在旧位置上 的车子不会被清除掉
ReleaseDC(pDC);
}
下面也是一个例子
void CBmp_v2_vc6Dlg::OnDrbegin()
{
CBitmap bmpBegin;
bmpBegin.LoadBitmap(begin);
BITMAP bmBegin;
bmpBegin.GetBitmap(bmBegin);
CDC *pDC = GetDC();
CDC BeginDC;
BeginDC.CreateCompatibleDC(pDC);
BeginDC.SelectObject(bmpBegin);
pDC-BitBlt(0,0,bmBegin.bmWidth,bmBegin.bmHeight,BeginDC,0,0,SRCCOPY);
ReleaseDC(pDC);
}
以上代码将会在客户区输出一个位图,不过如果你用其它窗口盖住这个窗口后再重新激活该窗口时,这个位图会被清除而矣,这是因为每次激活窗口时MFC都会自动调用OnDraw,而不会调用自建函数,位图不会再次被重绘。这就是自建函数与OnDraw 的区别
mfc如何实现截图文字识别
mfc实现截图文字识别步骤如下
1、点击“打开图片”,可对bmp格式图片进行文字识别
2、点击“截取图片”,鼠标变成十字,按下鼠标左键开始拖拽截取区域,松开鼠标左键完成截取图片并进行文字识别。
满意可以继续加分,MFC怎么截取指定区域的图像
这个问题涉及三个部分:鼠标定区、复制和保存图像、区域坐标存储。你的说明并不明确。
这个截屏和QQ的截屏不一样,只是窗口范围的话,在窗口OnMouseMove里面做就可以了,涉及的主要是SetCapture、SetROP2、AlphaBlend等函数的使用,百度这些函数名,相关示例代码很多。
复制和保存你的需求很模糊,可以使用内存DC、序列化、剪贴板等方法都可以,看你的需求了。(百度“VC 图像 剪贴板”)
记录和恢复坐标数据,如果希望关闭程序后再次打开依然有效,你需要存储这些坐标(一个RECT或者两个POINT)到本地,可以通过注册表、INI文件(WritePrivateProfileInt)或者文本文件保存(CFile::Read/Write)。
其实这些功能,每个单独去百度相关关键词,都能得到参考代码,单个功能并不复杂,但要根据实际需求和情况来选择使用。
用MFC做了一个浏览器,请问如何对网页进行截屏??谢谢
可以把网页数据全部保存成文件。
隐藏窗口的截屏就不太清楚了。没试过。
mfc截屏代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于截屏的代码、mfc截屏代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-09网页代码,网页代码快捷键
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
- 05-06在线html执行代码(html怎么运行)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
- 05-06代码源软件库(程序代码库)[20240506更新]
- 05-06点击弹出密码代码(点击弹出密码代码错误)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接