- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
抓图软件课程设计-屏幕截图软件设计
屏幕截图软件设计
杨金
(西北农林科技大学信息工程学学院计算机科学与技术2002级3班 陕西杨凌 712100 )
摘要: 本文阐述 VC++实现屏幕截图功能的原理和具体设计步骤,所实现的这个抓图软件可以截取整个屏幕,截取指定的窗口,并将截取到的图像以bmp文件形式保存到指定的路径下。技术重点在鼠标在屏幕上的准确定位;如何获取抓图的窗口句柄;如何对抓到的图片进行保存的问题。技术难点在如何将所抓取的屏幕窗口保存为磁盘BMP文件形式。
关键词:屏幕截图;BMP位图;设备环境(DC)
1 引言
在我们的日常上网活动当中比如看电影、玩游戏、做图等等会对一些画面特别喜欢!但是却没有办法将这些画面以图片形式保存下来,真是犹如“水中月,镜中花”看得到却得不到。由于QQ的出现,曾改变了几亿人的交流生活方式,它的里面嵌入的任意截图功能,更是为人们的生活增添了无限的欢愉和快乐,通过截图自己可以将最喜欢的游戏画面,最喜欢的电影画面,以图片形式保存,可以及时的发给好友共享,给我们带来了意想不到的帮助和惊喜。
另外系统的功能强大的截图软件在社会建设的各个领域都到了施展空间,为人们的工作生活创造了极大的方便,解决了许多棘手难题。可以说呀抓图软件有很广阔的应用前景,虽然它不算是很庞大的系统软件,但是其它的大型的主流系统软件能够嵌入抓图的功能,必将受到极大的欢迎和青睐。
所以在此次软件课程设计当中,我选择了用VC制作屏幕截图的软件,实现截取指定窗口,整个屏幕的功能,并且将截取的图形以BMP文件形式存放在指定路径的磁盘当中。本文将系统介绍截图软件的设计原理,设计步骤,设计方法,和运用的重点技术。
2 实现基本原理和运用相关技术
抓图软件基本原理就是把屏幕上所抓取的图像复制到内存中,并最后将内存中的图像内容以位图文件形式保存到磁盘当中。在这此软件设计当中,如果用户将鼠标左键按住不放,则开始抓取图片,此时隐藏程序窗口,以免影响在抓取时的“视野”,接着装入“魔法棒”鼠标,开始追踪鼠标的移动,然后获得鼠标所在处的窗口句柄,取得屏幕的设备环境句柄,以便在屏幕的任何位置绘图。接下来建立一红色的画笔,得到鼠标所在处的窗口的区域,在鼠标所在处的窗口四周画一红色的矩形,做为选定时的提醒。当鼠标左键释放的时候得到鼠标所在处的窗口的区域宽、高,然后建立一个屏幕设备环境句柄和与屏幕设备环境句柄兼容、与鼠标所在处的窗口的区域等大的位图,把新位图选到内存设备描述表中,最后把屏幕设备描述表拷贝到内存设备描述表中,终止鼠标捕获,恢复窗口显示模式。那么最后要作的工作就是写一个位图保存函数将内存当中的窗口图片信息以位图形式保存到指定磁盘当中。在整个程序当中要用到大量的函数:比如申请内存空间用于存放位图文件 GlobalAlloc(GHND,FileLength) 位图文件读入所申请内存空间中LoadFileToMemory( mpBitsSrc,mFileName) 在OnPaint等函数中用创建显示用位图用CreateDIBitmap()创建显示用位图用CreateCompatibleDC()创建兼容DC, 用SelectBitmap()选择显示位图 用BitBlt或StretchBlt等函数显示位图 用DeleteObject()删除所创建的位图屏幕抓图程序的关键有两点:一是应该知道鼠标在屏幕上有准确位置;二是应该知道欲抓图的窗口句柄;三是如何对抓到的图片进行保存的问题。对于问题一,很简单,利用SetCapture函数便能够追踪鼠标的移动(包括在屏幕抓图程序窗口之外的窗口)。对于问题二,这时会用到一个平时我们不常用的函数:WindowFromPoint,这个函数能够找出鼠标当前位置所对应的窗口句柄。具体用法可以参见MSDN,这里不做详细叙述。在选择抓图窗口时,鼠标的在位置的窗口都会出现加粗的色边框,以提醒目前所选择的窗口,这个功能实现起来有些复杂,POINT pt[5];
pt[0] = CPoint(rectCapture.left, rectCapture.top);
pt[1] = CPoint(rectCapture.right,rectCapture.top);
pt[2] = CPoint(rectCapture.right,rectCapture.bottom);
pt[3] = CPoint(rectCapture.left, rectCapture.bottom);
pt[4] = CPoint(rectCapture.left, rectCapture.top);
在GDI中,最常见的一个概念就设备环境(DC),每一个窗口都相应的具有自己的DC。如果能够调用到窗口的DC,那么,我们便能够在窗口上的任何位置绘图。然而,在屏幕抓图程序中,由于用户所选择的窗口是不
您可能关注的文档
- 成都美食攻略地图.doc
- 我与健康同行.ppt
- 我为妈妈做顿饭.doc
- 成长企业的价值判断--创业投资如何挖掘企业价值.ppt
- 我们去打高尔夫.ppt
- 我们喜爱卡通说说卡通.doc
- 我们怎样写论文.doc
- 我们如何进行有效的教学.ppt
- 我们的学校 小学社会、思想品德课件.ppt
- 我们的世界就像一粒沙.doc
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)