浏览 8843 次
锁定老帖子 主题:Java实现屏幕截取程序(区域内截屏)
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-31
网上java截屏的代码,都是调用Robot类的方法实现整个屏幕截取的,半天也没有找到关于鼠标拖动时进行区域截屏的代码。想了一下,还是可以实现的。问题的关键是在没有Java程序显示的情况下如何实现对鼠标的监听。这个比较难呀,不太清楚怎么实现,不过想到一个比较笨的方法:先将屏幕整个抓图保存下来,然后将图像显示个一个JFrame上,在JFrame内实现对区域抓屏。 猜测其他的抓图类的程序在选择了抓图操作后,整个界面好像锁定一样,所有程序都不再处理鼠标事件,貌似也是用的这种原理:用自己的面板以全屏的方式显示,以便遮挡住所有程序,同时将抓屏操作前的屏幕以图片的形式显示在自己的面板上,然后就可以在自己的面板上对抓屏得到的图像进行截取了。 程序设计的思路: 1、 选择了抓屏操作后,由Robot类对当前的整个屏幕进行截取操作,保存图像 2、将图像显示到一个JFrame上,因为要显示整个屏幕,所以JFrame要去掉所有的装饰,也就是说JFrame不能有标题栏,大小要和屏幕尺寸一样。 去掉JFrame的装饰可用下面的代码实现JFrame对象.setUndecorated(true) 3、因为在JFrame上要即要画屏幕的图像,又要在鼠标拖动时画出选择区域,为方便,将图像和选择区域放到两个不同的面板上完成绘制操作。两个面板层次位置可由JFrame内置的JLayeredPane实现,将两个面板放到JLayeredPane的不同的层上。 4、计算选择区域位置需要简单关注一下,这个不难。 5、为了方便操作,将抓图程序运行后入到系统托盘中。 这个用到了SystemTray和TrayIcon两个类。 因操作系统托盘的类类为JDK 1.6新增的,所以本文的代码只能在JDK 1.6上运行 代码已经更新,可以到下面文章对应的链接中下载。 http://daimojingdeyu.iteye.com/admin/blogs/235539 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-31
1)Robot这个类1.3就有了
2)可以把那个JFrame设成全屏的 |
|
返回顶楼 | |
发表时间:2008-08-31
谢谢bearice,第1)个问题偶搞错,现在已经改过。
问题2)将JFrame设置成全屏,是不是和偶用的方式一样?通过setUndecorated(true) 调用实现。 |
|
返回顶楼 | |
发表时间:2008-09-01
设置全屏请参考:
java.awt.GraphicsDevice.setFullScreenWindow |
|
返回顶楼 | |
发表时间:2008-09-04
资料不错,我先收藏一下,回家了再重新下一下.新注册的帐号憋的难受.
另外问一下.是直接通过mouse拉取选择的么? |
|
返回顶楼 | |
发表时间:2008-09-04
强,这个是不是能在Linux上用啊?
|
|
返回顶楼 | |
发表时间:2008-09-04
to:bearice 抓屏的话,不只要JFrame全屏,还要去掉窗口装饰,不然能看到窗口的标题栏。
to:JavaTestJava 在选择“抓屏”菜单后,就可以用鼠标进行拖动选择要抓区的区域了。 |
|
返回顶楼 | |
发表时间:2008-09-04
to:robertpi 不知道是不是所有Linux都能用,只在Ubuntu的8.04上测试过,是可以的,不过从文档上来看是有些Linux系统不支持系统托盘的。不过不支持话,程序会提示~~~
最新的代码可以下面文章的链接中下载 http://daimojingdeyu.iteye.com/blog/235539 |
|
返回顶楼 | |
发表时间:2009-07-13
请问web方式能实现远程桌面的控制吗?
|
|
返回顶楼 | |
发表时间:2009-07-18
fwh3002 写道 请问web方式能实现远程桌面的控制吗? 这个不太容易呀 |
|
返回顶楼 | |