毕业设计 基于Java的屏幕截图工具的设计与实现

293 篇文章 9 订阅
266 篇文章 18 订阅


1 项目简介

🔥 Hi,各位同学好呀,这里是L学长!

🥇今天向大家分享一个毕业设计项目作品:

基于Java的屏幕截图工具的设计与实现

🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分)

  • 难度系数:3分

  • 工作量:3分

  • 创新点:3分


2 实现效果

废话不多说,先上实现效果

在这里插入图片描述

置起点终点横纵坐标,注解请看下面:
这里实现的是获取截取屏幕范围起点、终点的横纵坐标,然后将这个范围的边框设置为红色,画出对应截取屏幕的范围。
对于纵坐标y,通过三目运算符判断,如果startY小于endY,那么y的值为startY,否则为endY。
选择区域的变量设置为select,创建一个新的矩形框对象,他的宽是起点的横坐标减去终点的横坐标的绝对值;他的高是起点的纵坐标减去终点的纵坐标的绝对值。
设置八点的位置,注解请看下面:
设置八个点的位置,先创建一个坐标对象,设置他的起始点和终点,起点就是x,y两个参数减去5个像素点,终点的位置在(10,10)
第二个点同上边的第一个点。
然后是第三个点的位置,判断起点的横坐标是否大于终点的横坐标,如果结果为true,则起始点横坐标为startX,否则为EndX;终点的坐标依然是(10,10)
依次往后的点都如同第三个点;
运行这个软件的效果:
通过if语句来判断代码是否开始执行,在这里调用前边写的方法,设置截图区域待确认状态下是青色,fillrect该函数用指定的画刷填充矩形,然后在设置截图边框颜色为红色,设置drawRect,将需要截图的矩形框坐标参数传入其中,设置他的颜色为黑色,然后设置drawString方法,在截图的时候输出一些提示用户的信息。
开始截图选择指定区域的4个顶点以及每条边的中点,展示图请看下图:
在这里插入图片描述
如果成功截图,则进入截图展示页面,在多层菜单栏显示出第几张图片,图片正下方有四个选项:”复制到剪切板”,”存储”,”关闭”,”编辑”,展示效果请看下图
在这里插入图片描述

篇幅有限,本文不做过多展示

3 系统设计

系统的设计目标
自制Java截图工具将原来纯手动输入取代了,能够将所需要的信息以截图的形式保存下来,是操作更速度更方便。
该软件的功能:
随机获取屏幕指定区域;
编辑(添加文字)截图;
存储截图;

系统功能整体设计
开发的总体设计:
截图:根据提示,随机获取指定屏幕区域
编辑:在图片上添加文字
存储:指定存储目录将截图进行存储
流程图请看下图:

在这里插入图片描述

4 关键代码

篇幅有限,无法放完整代码,源码分析在工程内

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;
		}
	}

5 论文概览

在这里插入图片描述

6 最后

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值