最近打算写个类似QQ屏幕截图的软件,然后把截取到图像可以进行简单的处理。(比如添加文字,描黑,加水印等等~)。
先考虑一下,屏幕图像如何来获取呢?
由于截取全屏幕,远远要比截取局域简单。所以先拿全屏幕开刀~O(∩_∩)O~
具体功能:可以双击区域,然后截取整个屏幕,在View中显示图像。
实现的步骤:
1:新建一个MFC单文档工程,不妨命名为Display。
2:在Display工程中,添加私有变量:CBitmap ScrBmp;用来保存图像数据源新建一个函数OnCopySrc,用来获取整个屏幕图像的数据源。代码如下:
该函数的每一步操作都有详细的说明,如果不懂请自行翻阅MSDN.
3:将得到数据源显示在View中,该函数的OnDraw如下所示:
4:添加双击事件,调用函数。
在事件OnLButtonDblClk(UINT nFlags, CPoint point)添加OnCopySrc();即可
至此,已经可以实现截取全屏幕。效果图如下:
看,简单吧,兴奋吧!先别得意,还有很多问题未解决。比如:
1:隐藏界面的实现。
2:获取全局性hook,然后截取右键菜单
3:截取屏幕任意区域图像,并且可以实现橡皮筋效果。
4:截取动态图像,比如电影图像~
等等....
大家有好的想法可以一起来写。
参考文献:1:http://www.vckbase.com/document/viewdoc/?id=1671(QQ静态屏幕截图的实现)
2:http://dev.csdn.net/article/41/41458.shtm(截取局域屏幕)
3:http://blog.csdn.net/sweetwxh/archive/2010/03/29/5426710.aspx(屏幕截图的实现和代码)