基于java的QQ截屏工具的设计和实现(论文+源代码+辅导视频+答辩PPT+任务书)课程设计论文模板

加微信,获取正文+源码:
👍 适合初学者作为课程设计和毕业论文设计的模板参考;

👭 查看文末<微信号>1对1马上沟通;

📝 选题、开题报告、任务书、正文、图纸、程序全都有;

🌈 全学科1对1咨询,承接各种定制系统,有问题可以留言咨询,帮助到更多的人。

基于java的QQ截屏工具的设计和实现(论文+源代码+辅导视频+答辩PPT+任务书)课程设计论文模板

第一章 程序简介

当今时代是飞速发展的信息时代人们在对信息的处理中对图像的处理量与日俱增这一点在文档人员上显得非常突出。

本软件采用Java语言进行模拟qq截图功能,获取屏幕方式灵活可以获取指定的屏幕并且可以对获取到的截图进行存储,编辑(添加文字)等操作对这些操作设置了自定义热键该软件主要有捕获光标功能,可以指定截取屏幕的区域。软件具有捕捉光标,可以随着鼠标的移动获取屏幕区域,为之后的存储和编辑提供前置条件。图片可以自命名,获取到的截图可以依据当前系统时间进行命名也可以通过模板(文件名)进行命名,拥有自命名功能。获取到的截图可以在窗口中央位置进行预览,并且可以指定存储区域将截图用bmpjpegpng(静态) gif(动态)其中的某一种图像格式将其存储,拥有预览和存储功能。可以直接将获取到的截图复制到剪切板中,之后可以从剪切板中粘贴到word等文档中。多层菜单栏,可以获取一到多个截图,并以多个界面显示出来,拥有层叠功能。可以通过编辑为截图添加文字,为截图添加一些描述信息之后仍可以将截图存储,用户有编辑功能。

第二章 程序截图

开发的总体设计:

截图:根据提示,随机获取指定屏幕区域

编辑:在图片上添加文字

存储:指定存储目录将截图进行存储流程图请看下图:

图4-2 程序流程图

系统的外观如下图所示:

图5-1 系统外观图

设置起点终点横纵坐标,注解请看下面:

这里实现的是获取截取屏幕范围起点、终点的横纵坐标,然后将这个范围的边框设置为红色,画出对应截取屏幕的范围。

对于纵坐标y,通过三目运算符判断,如果startY小于endY,那么y的值为startY,否则为endY。

选择区域的变量设置为select,创建一个新的矩形框对象,他的宽是起点的横坐标减去终点的横坐标的绝对值;他的高是起点的纵坐标减去终点的纵坐标的绝对值。

设置八点的位置,注解请看下面:

设置八个点的位置,先创建一个坐标对象,设置他的起始点和终点,起点就是x,y两个参数减去5个像素点,终点的位置在(10,10)

第二个点同上边的第一个点。

然后是第三个点的位置,判断起点的横坐标是否大于终点的横坐标,如果结果为true,则起始点横坐标为startX,否则为EndX;终点的坐标依然是(10,10)

依次往后的点都如同第三个点;

运行这个软件的效果:

通过if语句来判断代码是否开始执行,在这里调用前边写的方法,设置截图区域待确认状态下是青色,fillrect该函数用指定的画刷填充矩形,然后在设置截图边框颜色为红色,设置drawRect,将需要截图的矩形框坐标参数传入其中,设置他的颜色为黑色,然后设置drawString方法,在截图的时候输出一些提示用户的信息。

开始截图选择指定区域的4个顶点以及每条边的中点,展示图请看下图

图5-2 八点及边线展示图

如果成功截图,则进入截图展示页面,在多层菜单栏显示出第几张图片,图片正下方有四个选项:”复制到剪切板”,”存储”,”关闭”,”编辑”,展示效果请看下图:

图5-2 成功截图展示图

界面以及按钮的展示图如下:

图5-3 添加文字界面

其中需要设置格式过滤器,选择所需要的格式:

这是向用户可选择的文件过滤器列表添加一个过滤器,如果应该保存该文件就返回true,否则返回false,用户点击保存按钮的时候,由继承了这个过滤器类上门的UI调用此方法,但要确保指定的文件是可见的,不是隐藏的,并要通知对此事件感兴趣的所有侦听器,最后返回一个bmp对象,给用户一个反馈.       

这是通过继承filechooser类来让用户最终确定保存的格式,给用户提供了一种简单的机制,并返回用户保存路径,通过用户选择的保存格式,通过它相对应的过滤器,如保存GIG格式的过滤器privateclassGIFfilter并且写了一个暂时类,来显示当前的屏幕图像,TEMP,引证了过滤器的判断,最终实现jpeg,bmp,png,和动态图片gif,的保存。

展示图请看下面:

图5-4-3 截图保存过程图

点击保存后,进入到目录下进行查看,查看是否保存成功。

图5-4-3 查看已保存的截图

经查看已经成功存储

第三章 论文文档

第四章 源码示例

主界面设置代码及注解:
定义了一个私有的获取截图方法,并且声明一个截图对象,然后把他放到保存之后进行编辑(如:添加文字)
		panel.setBorder(new TitledBorder(border, "设置",
			Font.LAYOUT_LEFT_TO_RIGHT,Font.LAYOUT_LEFT_TO_RIGHT, font));
里面运用一个布局管理器,部件如果想加入其中需要借助GridBagConstraints,利用组件的横纵坐标,并设置了组件所占行列数,也就是截图的宽度,还有截图的高度,当组件在其格内而不能撑满其格时,通过fill的值来设定填充方式,
		gbc.insets = new Insets(5, 10, 5, 10);
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridwidth = 1;
		JLabel label;
		label = new JLabel("选择字体:", JLabel.RIGHT);
		panel.add(label, gbc);
		gbc.gridwidth = GridBagConstraints.REMAINDER; 
		fontCB = new JComboBox(Common.getAvailableFontFamilyNames());
		panel.add(fontCB, gbc);
		gbc.weightx = 1.0;
		gbc.gridwidth = 1;
		label = new JLabel("字体大小:", JLabel.RIGHT);
		panel.add(label, gbc);
		fontsizeTF = new JTextField("15");
		panel.add(fontsizeTF, gbc);
		label = new JLabel("水印位置:", JLabel.RIGHT);
		panel.add(label, gbc);
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		towardCB = new JComboBox(toward);
		panel.add(towardCB, gbc);
		gbc.gridwidth = 1;
		label = new JLabel("字体样式:", JLabel.RIGHT);
		panel.add(label, gbc);
		fontstyleCB = new JComboBox(fontstyle);
		panel.add(fontstyleCB, gbc);
		label = new JLabel("水印颜色:", JLabel.RIGHT);
		panel.add(label, gbc);
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		fontcolorCB = new JComboBox(fontcolor);
		panel.add(fontcolorCB, gbc);
		gbc.weightx = 1.0;
		gbc.gridwidth = 1;
		label = new JLabel("透明度:", JLabel.RIGHT);
		panel.add(label, gbc);
	利用滑块,用户可以用来对截图进行大小滚动查看,如果再深加设置,还可以通过拖拽来调节一些信息,比如音量,背光亮度等,可以在代码中生成对应的输出口。
			}
		});
		panel.add(alphaSlider, gbc);
		label = new JLabel("缩放大小:", JLabel.RIGHT);
		panel.add(label, gbc);
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		scaleCB = new JComboBox(scales);
		panel.add(scaleCB, gbc);
		gbc.gridwidth = 1;
		label = new JLabel("水印内容:", JLabel.RIGHT);
		panel.add(label, gbc);
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		markTF = new JTextField("From CSDN Cannel_2020's blog");
		panel.add(markTF, gbc);
		gbc.gridwidth = 1;
		label = new JLabel("执行进度:", JLabel.RIGHT);
		panel.add(label, gbc);
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		progressBar = new JProgressBar(0, 1);  
        progressBar.setStringPainted(true);  
        panel.add(progressBar, gbc);
		Common.setComponentsFont(panel, font);
		return panel;
	}
部分按钮设置相关代码:
	protected enum ButtonStyle{
		selectImage("选择图片"),
		selectSavepath("选择存放路径"),
		preview("预览效果"),
		batching("批量添加"),
		moreSetting("更多设置"),
		drirect("添加文字");
		private String name;
		ButtonStyle(String name){
			this.name = name;
		}
		public String getButtonName(){
			return name;
		}
	}

加微信,获取正文+源码:
👍 适合初学者作为课程设计和毕业论文设计的模板参考;

👭 查看文末<微信号>1对1马上沟通;

📝 选题、开题报告、任务书、正文、图纸、程序全都有;

🌈 全学科1对1咨询,承接各种定制系统,有问题可以留言咨询,帮助到更多的人。

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值