文章目录
- 1 项目简介
- 2 实现效果
- 3 系统设计
- 4 关键代码
- 5 论文概览
- 6 最后
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 最后
项目分享:见文末!