zoukankan      html  css  js  c++  java
  • 屏幕截图的实现和源代码

    最近打算写一些入门相关的小应用程序开发实例,个人感觉学习程序开发,其关键的一步就是阅读源代码(RTFSC,呵呵),然后尝试自己动手编写。这里所谓的自己动手编写并不是让你照着源代码一句话一句的敲,也不是复制粘贴,而是阅读了源代码以后,学习其中的编程思想,然后加以应用,写出自己的程序,你可以在你阅读的源代码上增加功能或优化代码,或者就是在完全不看源代码的情况下,实现相同的功能。如果想学好程序开发,一定要强迫自己做到这样。


    接下来是一个屏幕截图小工具的实例,当初做这个小工具是因为公司不能连接Internet,平时我都是用QQ截图,后来公司没有安装,于是自己编写了一个屏幕截图小工具,也是第一次正式用C++编写应用程序。

    该程序的流程相当简单:

    1.快捷键按下后启动截图功能,这里需要用全局键盘钩子来捕获键盘输入。

    2.获取分辨率后,将屏幕截图(原始截图)拷贝到内存当中。

    3.拷贝一份屏幕截图,并且转换为灰度图。

    4.拷贝灰度图到显示设备当中。

    5.获取鼠标选择区域,并绘制矩形框,将原图当中,鼠标框选部分截图拷贝到显示设备当中。

    6.获取用户输入,如果是ESC,则重复步骤4,如果是双击或者Enter按下,则将框选部分的原图拷贝的剪贴板中,并释放资源,退出截图。

    上面的流程便实现了屏幕截图的基础功能,启动截图后,屏幕变为灰色,鼠标选中部分为彩色,然后确定截图,在C++的源代码中,我加入了系统托盘和截图快捷键。

    源代码两个,一个是CPP的实现版本,一个是C#的实现版本。需要VS2008打开。

    点击这里下载C#版本。

    点击这里下载CPP版本。

  • 相关阅读:
    实现连续测试,要做的事情【译】
    Go语言HTTPServer开发的六种实现
    JSON必知必会【PDF+视频教程】
    给JSONObject添加自定义遍历方法
    利用守护线程隐式关闭线程池
    从错误中学习
    Groovy动态添加方法和属性及Spock单测
    持续测试、持续集成、持续交付、持续部署和DevOps
    有关OAuth 2.0简化模式中步骤D-F的解释
    Spring笔记(五):bean的自动装配
  • 原文地址:https://www.cnblogs.com/sweetwxh/p/2121405.html
Copyright © 2011-2022 走看看