当前位置:首页 > 代码 > 正文

mfc截屏代码(截屏的代码)

admin 发布:2022-12-19 23:14 143


今天给各位分享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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/29583.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载