前两天装Spark的时候发现里面有一个截图工具很炫,Spark是用Swing写的,那这个截图的Function应该也是用Swing来写的,就在想实现的原理,网上搜索了一下,不过多半是讲怎么样截取整个屏幕,但如果要对屏幕上某个区域截图的话似乎是没人提到的。最大的难点应该在于如何在整个屏幕上显示一个可以拖拽的透明矩形框,这个问题我以前也想过,不过一直没想到好的解决方案,其实现在想想关键在于思维局限性,只是想到在屏幕上面绘制一个单纯的透明矩形框,其实完全可以绘制一个大的透明的Cover将整个屏幕遮住,然后再在这个Cover上绘制矩形框就OK了。原理就这么简单了,呵呵,上我的截图:
- 选取屏幕某块区域:
 黑色铅笔区域就是截图工具的选择区域。
黑色铅笔区域就是截图工具的选择区域。
- 截图完成
 还有点不足的是,因为用到了窗体透明,所以本程序基于JDK 6 update 10Beta,JDK 6 update 10正式发布估计也还有好几个月吧,这个是局限。
不过通过屏幕截图绘制背景图的方式也可以实现透明,但比起的Sun官方实现,还是略显笨拙。
完整源代码下载。
还有点不足的是,因为用到了窗体透明,所以本程序基于JDK 6 update 10Beta,JDK 6 update 10正式发布估计也还有好几个月吧,这个是局限。
不过通过屏幕截图绘制背景图的方式也可以实现透明,但比起的Sun官方实现,还是略显笨拙。
完整源代码下载。

 
 博文
博文
 
 
0 评论:
发表评论