QQ截图大家都用过吧,从体验上来说是一个非常不错的软件,它只有200多kb,非常小巧,敢肯定应该是基于原生window api开发的,没用任何第三方的东西,接下来我想高度仿做一个这样的软件
技术难点分析:
1.截图中所使用的可调整矩形区域的控件,在mfc中有CRectTracker这样的控件,我们从vs安装目录下取得源码后,可以制作一个win32上所使用的控件。
2.在画图过程中根据WM_MOUSEMOVE处理消息时有一个大坑,鼠标移动所产生的点会被放入消息队列中,然而消息队列中的消息发送出去是一个时钟任务,每隔10ms处理一个消息,这就有问题了,在画图的时候鼠标移动速度慢看不出来什么,但是鼠标移动速度一旦很快的时候,你会发现画图的动作跟不上鼠标的动作,这来需要有一个专门的算法,来补上这些漏掉的点【代码中未给出】
3.使用双缓存技术,解决绘图过程中的闪烁问题,有统一的处理方法,这个很简单。
4.双缓冲也是有bug的,也是这个程序的一个缺陷,未解决,bug出现后,这个东西就不想在继续下去了,因为我真的解决不了这个问题,不知道什么地方出错了,导致在截图区域移动一段时候后,突然背景就没了,分析了好久也不知道是什么原因导致的,希望有了解的同学,帮忙给我点提示。。。
最终成品效果展示:
源代码下载:
http://download.csdn.net/detail/cc_want/9801125
github地址:
https://github.com/CCwant/SnapShot