第一课WINDOWS开发编写全屏截图工具
2018-08-26 17:15:49来源:博客园 阅读 ()
本次我们采用一个CImage类来对屏幕进行截图,方便,快捷。
用到的函数有: GetDC()
GetDeviceCaps()
CImage成员函数(Create();GetDC()) BitBlt()
注: CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容
Image控件可 以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)
播放视频:
如未播放请点击播放:
https://www.bilibili.com/video/av30031453/
下面是语录:
好,大家好,我是Simon。接下来的时间由我和大家一起学习VC编程。
那么首先讲一下前言部分就是说跟培训的一个初衷。
第一的话是感谢网友们对我一直的支持跟信赖。
然后就是说这一套课程和大家一起来学,因为现在时间比较充足,然后我定了一个大纲跟大家一起来学这套课程。
课程的话目前是定为十个小程序,然后分别来讲一下windows程序开发,然后里面涉及的内容的话也相对的比较多,里面有多媒体,文件操作,桌面编程文件加解密、控件运用等等知识,那么这套课程的话跟大家一起学,首先就是说我个人的话也是一个菜鸟,那么在讲课的过程当中,要是有什么错的地方,还请大家多多包涵,那么这就是我定制的十个小程序,每一个程序里面可能会有多节课。那么我们的第一课的话,就是说编写一个屏幕截图工具,那么这屏幕截图的话可能会目前我想实现有三个功能,就是全屏截图,然后对指定大小截图,或者说对某个窗口进行截图,那么总共就是说有三个功能,截图软件。
那么我们现在的话就是开始去进入实际的一个程序设计阶段。
那么这个的话是说编写一个全屏截图工具。那么这个工具的话就是我们采用一个cimage的一个类。
然后对它进行一个截图操作。那么采用这个类的话,主要是方便,然后再说快捷。在这的话就是说这里是用到的函数,用到的函数的话可能就有以下这几个。然后就是说我为什么用这一个类,然后这里我要给大家解释,就是说这一个类的话,它是可以造成不同的图片,不同的图片他都能够处理。那么这个的话就是编写起来会相对比较麻烦,然后他也就是只能加载一个BMP的一个图像,那么现在我们来打开我们的开发环境,首先我们新建一个项目,然后我们命名为屏幕截图,然后我们直接选择MFC的一个应用程序然后选择一个对话框程序我直接点完成!
这些的话我们都删除在编写之前的话,我们先先看一下我们系统里面的一个截图工具,那么这里就显示截图了。我们本次的话就是来实现系统的这样一个截图工具的一些功能,然后我们看到这里它是有四个不同的选项,那么我们来讲的话就是讲全屏截图,窗口截图。这里是矩形截图,大概的话就是实现就是这样的一个功能,比如说我们这一个截图,可以看到它是截下来了,这也是保存。那么我们这一次的话看一下先这样。我们先添加按钮。
我这里就是一个按钮,全屏截图,然后再把他的ID进行了一下修改,然后我们双击它来到我们的代码部分,那么我们开始编写之前,我们看一下,PPT就是说用到了这一些函数。那么第一个的话我们是用盖的dc,给到第C的话,它是获取我们先要获取截图的对象,那么我们就先桌面获取桌面。
面就是句柄,获取它的巨别,用全局的。这里是需要一个窗口疾病唱歌级别,我们获取桌面,那么我们就成空进去。这里安徽至H bc,然后定义一个获取一个桌面。get DC,然后获取到一个。
窗口获取到窗口疾病以后或者获取这个是屏幕疾病获取到屏幕疾病以后,我们先看一下,让这一个API这个的话它是去获取我们看一下班组文件,。
我们直接去看一下它的函数的一个介绍。这个函数的话它是访问一个指定设备,设备制定,设备设备描述表。然后参数的话它是一个区别一个DC的一个级别,这是一个返回的一个线,那么这个参数的话是下面这些字。这里的话就直接就去。然后首先的话我们要获取像素,我们先获取他的一个像素,
他的胃阿比特像素点。那么说过去,获取到桌面的像素,然后我们还要去获取它的一个长度和高度。还是用这个来。获取的,还是获取对象。这个是物理的。然后我们就获取这个的宽度。像素的。我们是或指责的。
我知道。那么这里是高度宽度,我们都获取以后,然后我们接下来就是去进行。那先宽度够,我们构造一个cm IG的一个兑现获取对象,还是一个然后定义对象,定义完以后,我们去调用它的一个考虑的函数。然后这一次宽度跟高度。这里是看一下。它这个是整形,它有个返回值。这个是返回一个指定的值到这个线。所需。
的一个现值。回,我们再先接受他。这个的话就是温度这样子。然后这里的宽度。再一个的话,它是我们获取的像素点,比特的数目。最后一个看,最后一个是一个标志,然后他这个有默认值了,默认值我们就不管他。他也默认。然后这里创建了我们就是说实力一个这样的一个对象以后,然后我们再进行了一个参见。就说创建了一个画布,创建了一个画布,划拨的话是跟我们桌面的一个大小是一样的,就说一个相同大小的一个画布。然后画布创建完以后,我们先来获取获取这个疾病这个剧。过去的
获取他。获取完以后我们进行进行拷贝,把我们的图片给拷拷上去。
这个函数是大概的意思是什么?这个是进行一个转换。然后是他这一个就是说从一个地方把数据然后进行一个转换,大概意思是这样子,。
然后这里是它的一些参数,这个是它的一个区别。然后是我们这也就押它的高度宽度。然后看一下,这也是他的一个dc。然后这里填的话就是我们刚才获取到了一个内存的一个基本的和XY的话,我们是不需要那么。我们直接就然后这里是宽度,宽度的话就是我们之前上面获取到的。考,然后这里是我们的一个目的。然后是是它的一个圆圆的话,就是我们上面获取到的一个区别,他能获取到的。然后这里是零填充。然后最后一个的话是。这是最后一个。光标代码,这个代码定义,一个颜色数据来自元。举行合适进行一个计算的是一个什么?设矩形。然后参数是来自。
上面最是那么这个是黑色,我们是看一下,我们直接用这一个拷贝拷贝云举行的一些目的。我们就靠这个就用这个。这是园举行直接考到一个目的,去。我们就把它一个数据直接拷过来,直接拷过去。然后我们进行拷贝以后,然后我们是对他的话是我就对他进行写到文件去,因为这里我们现在也不进行一个行,没有其他处理,我们就先试一下,能不能把它给写到我们这个文件里去,这一个类里面的话,它是有一个怎么赊货的一个保存,我们可以去看一下这个类。这个类里面有各类成员,然后这里有很多的一些它的一些成员函数,那么这一些的话我就不细讲了。那么我们这一次用到的话就是这一个创建了一个这样的对象,为图,然后我们再进行对它是进行了一个创建以后是我们来对它保存。这个是保存选项。这是不能保存图片的一个选项。它是指定。好的,那么保存。来看一下。这是一个指向这样的一个对象,包含的文件数据,然后这个是文件的名,这是它的一个类型。保存为什么类型?那么我们这里就是直接文件名,文件名的我们保存。C盘去宝城。。有两个。我们用的这个的话,它是属于一个是它的一个内成员,那么我们这里直接选第一个。这个的话是我们保存的是这种格式的这种格式。然后这里就完成了,然后这里边一。这里有个失败。他说未定义,要加这个东西。
来生成一下。给的DC刚才是用这个。这里有。备注,那他是说是调用了这个东西的话,是你必须要去调用这个东西。类似DC,那么就是说要是放他这里的话,我们现在进行保存完以后就把它释放掉。那么这样的话我们的代码就写完了,然后我们来测试一下,看看他是否能够生成我们。就是说想要的效果。我们先到C盘来看一下。C盘的话这里是没有东西的。那么我们现在分析,然后这里是点一下,我们来看一下它有没有生成文件。可以看到这里它是生成了。然后这是屏幕的大小。这样的话我们就成功的把这个视频,把这个文件把桌面的截图就交给成功截取下来了,那么这些东西的话就是效果我们就实现了。实现了一个全屏截图的这样一个功能。那么好,那么我们这节课的话就讲到这里,感谢大家收看。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭 2020-05-24
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- windows7 + Qt(MSVC2017) + VS2019安装配置 2020-04-25
- windows10环境下QtCreator中出现skipping incompatible xxx 2020-03-31
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash