- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何捕获桌面屏幕截图
· 下载PicZoom源 171.92 KB
· 下载InstallPicZoom源 17.92 KB
· 下载PicZoom二进制 455.41
目录
· 简介
· 背景信息
· 使用代码的
· 如何捕获桌面屏幕截图?
· 主要组件
· 功能和 4组件组件的实现
· 背景信息
· ImageArea
· 缩放按钮
· 显示缩放因子的显示
· 翻译工具
· 旋转
· 顶点缓冲区逻辑
· BottomWindows
· 鼠标在按钮效果。
· 当前按钮按钮的显示功能
· 关闭按钮
· 幻灯片放映功能
· 拖放图像文件的操作。
· PicZoom 中使用的类
· 主类
· 实用程序类
· OpenGL包装类
· 安装程序插件
· 兴趣点
· 限制值
· 历史记录
简介
本文讨论 PicZoom应用程序 [A photo viewer with some functionalities are similar to the Picasa Photo Viewer]的实现细节。 PicZoom是基于MFC的应用程序,而OpenGL则用于绘图。 明暗器程序不用于显示,因这里我希望 PicZoom在没有高端图形卡的情况下运行。 由于需要一些图形内存来准备所有的纹理 [Background, Image, Buttons, etc],所以需要图形卡来运行 PicZoom。 限制部分解释了PicZoom的图形内存限制。
背景信息
当我开始研究OpenGL时,我创建了一个简单的应用程序来从文件加载一个图像,并。 OpenGL提供一些api来做一些简单的图像操作,比如缩放。平移。旋转。 Picasa照片查看器插件是一个简单而优秀的图像浏览器工具。 在本文中,我只是模仿使用OpenGL和MFC的Picasa照片查看器的一些功能。 我相信这个应用程序的性能对Picasa不满意,但是它尝试使用OpenGL和MFC进行某些操作。 欢迎任何意见和改进建议。
PicZoom [With some image operations] 屏幕截图。
对话框模式下的PicZoom屏幕截图。
使用代码的
最初,我几乎在一个类中完成了 PicZoom的所有功能。 在一个单独的班级里管理一切是非常困难的。 因此,我根据不同的功能准备了不同的类。 例如,ImageArea类将处理与图像相关的所有操作 [draw, zoom, pan, mouse cursor based on image] 。 然后 PicZoomDlg将创建 ImageArea。Background。等等的对象,并以较少的努力来管理它们。 编写了opengl包装类,处理初始化。纹理创建。文本绘制。圆绘图等。
启动 PicZoom时,它捕获桌面背景并为背景创建半透明视图。 实现细节如下:
PicZoom与半透明桌面作为背景的屏幕截图。
如何捕获桌面屏幕截图?
只需调用 ::GetDesktopWindow()并检索桌面窗口句柄。 然后准备一个内存dc并读取桌面窗口的内容 [RGB data] 。 GetDIBits()将桌面窗口的RGB缓冲区提供给已经分配的内存。 下面是捕获桌面屏幕截图的代码。
bool ScreenCapture::TakeScreenShot()
{
// Get Desktop window.
HWND hDesktop = ::GetDesktopWindow();
// Get temporary Dc for getting data from Desktop.
CDC dc;
HDC hdc = ::GetWindowDC(hDesktop);
dc.Attach(hdc);
CDC MemoryDC;
MemoryDC.CreateCompatibleDC(dc);
CBitmap BmpObj;
BmpObj.CreateCompatibleBitmap(dc, sz.cx, sz.cy);
CBitmap * oldbm = MemoryDC.SelectObject(BmpObj);
// Get data from Desktop to Bitmap.
MemoryDC.BitBlt(0, 0, sz.cx, sz.cy, dc, 0, 0, SRCCOPY);
// Read RGB data of Desktop window Dc.
int nStatus = ::GetDIBits( MemoryDC.m_hDC, (HBITMAP)BmpObj.m_hObject, 0, sz.cy,
m_pBuffer, stBitmapInfo,DIB_RGB_COLORS );
}
主要组件
上面的图显示了 PicZoom中主要类的
您可能关注的文档
最近下载
- 2025年初二政治培优补差工作计划(通用9篇).pdf VIP
- 2023年最新资料员考试题库附参考答案【精练】.docx
- 国内长视频行业市场分析.pdf VIP
- 中国医科大学《护理研究(本科)》在线作业.docx VIP
- 2025高校辅导员素质能力大赛模拟试卷附答案.docx VIP
- 2010款捷达全车电路图.pdf VIP
- 家用新能源汽车充电桩安装施工方案.pdf VIP
- 5eDnD_凡戴尔的失落矿坑_模组_中译(二校).pdf VIP
- 2025至2030中国长视频行业市场深度调研及发展趋势和投资前景预测报告.docx VIP
- 政府车队公务车辆定点维修采购项目招标文件参考修改模板范本.doc VIP
原创力文档


文档评论(0)