利用CImage进行屏幕截图
来源:互联网 发布:霍布斯鲍姆 知乎 编辑:程序博客网 时间:2024/05/22 13:08
// 函数说明: bFull如果是真,则截取整个屏幕否则只截取活动窗口.strPath是保存图片的路径.
// 如果函数成功,则将文件保存在指定的路径,格式为PNG
BOOL CaptureScreen(BOOL bFull, CString strPath)
...{
CImage image;
CWnd* pWnd;
CRect rect;
BOOL bStat;
if(bFull)
pWnd = CWnd::GetDesktopWindow();
else
pWnd = CWnd::GetActiveWindow();
ASSERT(pWnd);
if(pWnd == NULL)
return FALSE;
CWindowDC winDC(pWnd);
pWnd->GetWindowRect(&rect);
int nBPP = winDC.GetDeviceCaps(BITSPIXEL) * winDC.GetDeviceCaps(PLANES);
if(nBPP < 24) nBPP = 24;
bStat = image.Create(rect.Width(), rect.Height(), nBPP);
ASSERT(bStat);
if(!bStat)
return FALSE;
CImageDC imageDC(image);
::BitBlt(imageDC, 0, 0, rect.Width(), rect.Height(), winDC, 0, 0, SRCCOPY);
CString strFull = MakeFilename(strPath);
HRESULT hr = image.Save(strFull);
if(FAILED(hr))
...{
TRACE("Couldn't Save File: %s, %x ", (LPCTSTR)strFull, hr);
return FALSE;
}
return TRUE;
}
// 函数说明:结合路径,自动产生一个文件名
CString MakeFilename(CString& strPath)
...{
CString strRet(strPath);
static UINT i=0;
if(strRet.Right(1) != "/")
strRet += "/";
strRet.AppendFormat("%03.3d.png", i++);
return strRet;
}
// 引用方法:
CaptureScreen(TRUE, "c:/");
// 如果函数成功,则将文件保存在指定的路径,格式为PNG
BOOL CaptureScreen(BOOL bFull, CString strPath)
...{
CImage image;
CWnd* pWnd;
CRect rect;
BOOL bStat;
if(bFull)
pWnd = CWnd::GetDesktopWindow();
else
pWnd = CWnd::GetActiveWindow();
ASSERT(pWnd);
if(pWnd == NULL)
return FALSE;
CWindowDC winDC(pWnd);
pWnd->GetWindowRect(&rect);
int nBPP = winDC.GetDeviceCaps(BITSPIXEL) * winDC.GetDeviceCaps(PLANES);
if(nBPP < 24) nBPP = 24;
bStat = image.Create(rect.Width(), rect.Height(), nBPP);
ASSERT(bStat);
if(!bStat)
return FALSE;
CImageDC imageDC(image);
::BitBlt(imageDC, 0, 0, rect.Width(), rect.Height(), winDC, 0, 0, SRCCOPY);
CString strFull = MakeFilename(strPath);
HRESULT hr = image.Save(strFull);
if(FAILED(hr))
...{
TRACE("Couldn't Save File: %s, %x ", (LPCTSTR)strFull, hr);
return FALSE;
}
return TRUE;
}
// 函数说明:结合路径,自动产生一个文件名
CString MakeFilename(CString& strPath)
...{
CString strRet(strPath);
static UINT i=0;
if(strRet.Right(1) != "/")
strRet += "/";
strRet.AppendFormat("%03.3d.png", i++);
return strRet;
}
// 引用方法:
CaptureScreen(TRUE, "c:/");
- 利用CImage进行屏幕截图
- 利用CImage进行屏幕截图
- 这是微软自带的一个利用cimage进行截图的例子,值得看看
- WebDriver进行屏幕截图
- 对屏幕进行截图
- MFC 使用CImage获取到屏幕截图,指定格式保存到文件
- Android上使用SkBitmap 进行屏幕截图
- C#进行屏幕截图简洁代码
- 通过使用GDI+和CImage类配合实现针对目标窗体的子控件进行截图
- 利用Robot类,进行截图,然后保存
- 如何利用Ffmpeg进行视频截图
- java windows 利用ffmpeg进行视频截图
- 屏幕截图
- 屏幕截图
- 屏幕截图
- 屏幕截图
- 屏幕截图
- 屏幕截图
- C++的iostream标准库介绍---之stringstream
- XML初学者必读
- 痛快
- ftfind 桌面搜索引擎的设计文档 (1)
- 做环保主义者,用Maven2 管理Java类库[摘]
- 利用CImage进行屏幕截图
- ftfind 桌面搜索引擎的设计文档 (2)
- 定制wordpress左边的sidebar
- 一篇很有意思的文章
- 脱一个PECompact2.X的壳
- 正交表方法在创建测试套件上应用
- 软件开发
- java学习方向〔转〕
- 十年前后