前言
首先声明本系统的环境信息:
Eclipse4.9、JDK8
对的,没错,本系统没用到数据库,完全靠java代码实现。
效果展示
功能说明
上图已经很全了!但是这里有个逻辑比较的不符合常规逻辑。
添加文字功能逻辑:
首先点击添加“A”,将当前选择更改为文字,然后在下方选择文字大小和输入文字内容,最后在左边画布上点击鼠标左键,噔噔噔!就成功添加文字了!如下图所示:
详细说明
首先我这个界面的布局是这样的,分为菜单栏、绘图板、辅助栏、信息栏,如下图所示:
代码介绍:
PS:嫌我讲的墨迹的小伙伴,直接点我跳转到源代码处!
首先打开本系统,看到是三个package,这里讲解一下:
其中各个package的功能如下表所示:
Package名称 | 功能说明 |
---|---|
app | 说实话,没啥用,里面的文件下面会讲到。 |
model | 里面存放的是本系统所需要的类。 |
view | 正如view的意思一样,这里放到是主界面。 |
其中各个class的功能如下表所示:
Class名称 | 功能说明 |
---|---|
MainApp.java | 提供了整个程序的入口,里面只做了一个功能,实例化了MainFrame.java,可以从此处运行本系统,也可以从MainFrame.java运行本系统。 |
MainFrame.java | 主界面的实现类,主要使用javaswing的各种控件来实现主界面的布局。 |
MyMouseListener.java | 整个系统的监听类,在主界面中为每个控件单独写监听方法太麻烦了!因此将本系统所有的监听功能集合到一个class中。 |
PaintPanel.java | 本系统的主角,中间绘图板,继承自JPanel,主要实现了图片的加载,新建,保存等功能。 |
Shape.java | 本系统的核心,该class保存了当前绘制的形状,以便后续使用。 |
原理介绍:
1、选择:
功能分析:鼠标按下->拖动选择区域
实现:记录鼠标按下时的坐标x1,y1,拖动时记录鼠标的实时位置x2,y2,
最后用画图graphics类,绘画矩形即可,注意边框为虚线。
2、铅笔:
功能分析:鼠标拖动
实现:记录鼠标的坐标x1,y1,在坐标处绘制半径为1的小圆点,宏观上连起来就是直线。
3、橡皮擦:
功能分析:鼠标拖动
实现:记录鼠标的坐标x1,y1,在坐标处绘制半径为10的小白点,宏观上就是将图像抹除了。
4、刷子:
功能分析:鼠标拖动
实现:记录鼠标的坐标x1,y1,在坐标处绘制半径为5的小圆点,宏观上就是类似笔刷的效果。
5、直线:
功能分析:鼠标按下->拖动形成直线
实现:记录鼠标按下的坐标的x1,y1,拖动时的鼠标坐标x2,y2,
在起点终点间绘制直线即可。
6、圆形:
功能分析:鼠标按下->拖动
实现:记录鼠标按下的坐标的x1,y1,拖动时的鼠标坐标x2,y2,
在起点终点间绘制圆形即可。
7、矩形:
功能分析:鼠标按下->拖动
实现:记录鼠标按下的坐标的x1,y1,拖动时的鼠标坐标x2,y2,
在起点终点间绘制矩形即可。
8:文字:
功能分析:鼠标点击
实现:记录鼠标按下的坐标的x1,y1,在x1,y1处drawString即可。
已知BUG
- 已绘制图形清除后,将界面最小化,重新打开界面后,清除的图形又会出现。
- 在绘制直线,圆形,矩形时,拖动生成图形,会将已存在的图形清除。
实现
源代码免费分享给大家!
但是因为代码行数过长,因此将百度网盘链接放在我的个人公众号 熊子q 中,
回复【图形编辑系统】即可获得!
结语
我是熊子q,一个进击中的程序员。
你知道的越多,你不知道的越多,
欢迎点赞收藏转发一键三连!
注:如果本篇博客有任何错误和建议,欢迎人才们留言!