基于Swing实现的截屏工具
主要思路:
首先绘制截取到的屏幕,然后绘制mask层,根据用户鼠标选择,将选择区域的mask层像素设置
为完全透明,即不透明度为0,当不透明度为255时表示完全不透明。关于如何操作
BufferedImage像素参见这里:http://blog.csdn.net/jia20003/article/details/7279667
图示如下:
技术点详解:
1. 使用Javarobot类实现对屏幕的截取
2. 使用MouseListener与MouseMotionListener实现对用户鼠标操作的位置跟踪
3. 使用UI与控制分离的原则完成编码
4. 使用Java2D功能完成对选择区域的标识与像素提取
5. 使用以前的FullScreen功能实现全屏功能-http://blog.csdn.net/jia20003/article/details/6876995
6. 使用Swing的ToolKit类实现剪切板操作
7. 使用字体文件完成特殊字体显示功能
8. 通过对像素数据的透明度设置实现mask功能
关键代码解释:
实现Robot截屏的代码如下:
// Make a rectangle accordingto the size of the screen
Rectangle rectangle =newRectangle(Toolkit.getDefaultToolkit().getScreenSize() );
//Take the screen snapshot
Robotrobot =newRobot();
returnrobot.createScreenCapture(rectangle);
实现Swing剪切板功能的代码如下:
CustomTransferabletransferable =newCustomTransferable(bi,1.0f);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(transferable,null);
实现图像保存的代码如下:
File outputfile =fileChooser.getSelectedFile();
System.out.println(outputfile.getAbsolutePath());
ImageIO.write(bi,"png", outputfile);
实现选择区域矩形获取与更新UI的代码如下:
endX= (int)event.getPoint().getX();
endY= (int)event.getPoint().getY();
if(startX> 0&&startY> 0
&& (endX>startX) && (endY>startY))
{
intwidth =endX-startX;
intheight =endY-startY;
mainView.updateView(newRectangle(startX,startY,
width,height));
}
创建Mask的代码如下:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
intheight = (int)screenSize.getHeight();
intwidth = (int)screenSize.getWidth();
maskImage=newBufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
int[] pixels =newint[height *width];
intindex = 0;
intta = 0, tr = 0,tg = 0, tb = 0;
for(introw = 0; row< height; row++) {
for(intcol = 0; col< width; col++) {
index = row * width + col;
ta = 255/2;
tr = Color.GRAY.getRed();
tg = Color.GRAY.getGreen();
tb = Color.GRAY.getBlue();
pixels[index] = (ta << 24) | (tr<< 16) | (tg << 8) | tb;
}
}
setRGB(maskImage, 0, 0, width,height, pixels);
有如下功能:
-支持mask功能
-直接截屏选取,类似QQ截屏选取功能
-支持copy到系统剪切板
-支持保存截屏为png或者jpg格式文件
- 支持鼠标文字添加-类似Windows Paint添加文字方式(新功能2012-06-19)
使用说明:
-直接双击jar文件可以直接运行
-如果你的winrar或者其它压缩工具关联了.jar文件,请右键选择Java图标运行
-当点[Capture Screen]之后,变成全屏模式,只有按<Esc>键才会退出
-当按<Esc>键退出时,鼠标选择区域的图像将会自动被显示在窗口中,如图所示:
程序启动界面:
完成截屏按<Esc>键返回窗口模式界面:
点击[SaveImage]按钮时候效果:
特别提示:运行该工具需要预先安装JRE6或JRE6以上版本运行环境
下载:可执行jar文件可以在这里下载使用(已经更新,速度更快):
http://download.csdn.net/detail/jia20003/4370539
分享到:
相关推荐
1.基于Swing实现的快速截屏工具 2.支持剪切板操作与保持为PNG格式图片 3.支持鼠标选择 4.特有mask功能
基于JavaSwing QQ屏幕截图工具设计与实现
基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储...
基于JavaSwing QQ屏幕截图工具(论文+软件源码+视频说明)已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作...
基于JavaSwing QQ屏幕截图工具答辩PPT.
基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储截图;
基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储截图;
基于java的截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储截图;
基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)...
基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储截图; 数据库:无 ...
基于Java Swing和MySQL的酒店管理...项目实现:在分析系统需求和设计思路的基础上,我们采用了Java SwingGUI工具包和MySQL数据库来实现该系统。系统实现过程包括界面设计、功能模块开发、数据库连接和数据存储等方面。
①管理员和学生不同的管理等级进行登录系统 ...技术大同小异,所以感兴趣的同学可以在书本借阅的界面增加...学生端 ①借书和还书功能 ②借书超时罚款 ③修改密码 ④统计分析 等等 更多的功能来看看下面的截图吧 截图部
资源包含文件:课程论文word+项目源码+项目截图 电子图片管理程序是一款使用方便的图片管理软件,小巧方便,功能强大,可以很方便的去让用户管理自己的图片,增删改除,放大缩小,处理图片等。它在设计时采用了缩略...
使用说明:将源码导入Java ee工具,导入mysql数据库脚本,修改数据库连接语句,调试运行。
使用说明:将源码导入Java ee工具,导入数据库脚本。修改数据库连接语句,调试运行。
使用说明:将源码导入Java ee工具,将sql脚本导入数据库,修改数据库连接语句,调试运行。
使用说明:将源码导入Java ee工具,将数据库脚本导入MySQL数据库,修改数据库连接语句,调试运行。
Android 测试小工具基于Maven的Java Swing GUI桌面应用开发并集成adb命令完成应用程序信息快速查看,工具的主要用途用于快速获取安卓设备当前正在运行的最顶层APP的相关信息,如:PackName、PackBit、Launchable_...
开发工具:SQLServer2000+JBuilder2006 开发技术:Swing+JavaBean 开发周期:1个半月 描述:本系统为桌面应用程序,采用基于Swing技术的图形化设计界面。 设计文档+程序源代码+程序运行截图+数据库 ...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...