如何捕获桌面屏幕截图.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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中主要类的

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档