Java小程序之高级画板功能篇II
前言:在完成Java小程序之高级画板UI篇和功能篇I后,我们的画板已经初具雏形,拥有了较好的UI界面以及能够根据选取的颜色绘制相应颜色的直线、矩形、椭圆等图形了;今天我们将在以前的基础上继续完成画板的铅笔功能、喷桶功能、刷子功能,橡皮擦功能、取色器功能,一起让我们的画板变得更强大吧!
思路:
一、.
铅笔、刷子、橡皮擦功能的实现
1.1铅笔功能
1、铅笔是鼠标拖动时画的线,所需要实现
MouseMotionListener鼠标移动监听器,我们采用一个类来实现多个接口(当然心可以新建一个类去实现该接口)
2、添加新的鼠标监听器类
3、在鼠标移动时间中实现画笔的逻辑(其实就是绘制直线,鼠标每移动一个像素,就会触发移动事件,通过移动事件获取鼠标的坐标,与上一次移动的坐标连线就可以了)
1.2刷子功能
刷子其实就是加粗的画笔,画出来的直线更粗,这里需要用到Graphic2D画笔,我们强制把获取的画笔转型成Graphic2D类型,这时通过g.setStrock(Strock s)方法设置画笔的粗细,里面的参数Strock是接口类型,这里采用已经实现该该接口类型的子类BasicStrock类型来产生一个粗细的对象
1.3橡皮擦功能
橡皮擦就是把画笔颜色设置成相同的背景颜色就可以了,拖动鼠标时进行擦除,所以在鼠标拖动事件中编写逻辑(这里为了方便擦除,我们把擦除的画笔的粗细变粗一点)
二、绘制多边形
1、第一次鼠标按下和释放:绘制一条直线
2、后续图形绘制:本次释放点和上一次释放点连线(设置标志flag来区分是第一次还是后续绘制)
3、双击,封闭图形(当前点击位置和最开始鼠标按下的位置连线,并将flag标志还原,可以试试不还原会出现的效果)
三、喷桶功能
1、定位方法:鼠标拖动事件实现
2、随机数生成:Random
3.实现原理,在鼠标拖动附近绘制很多的原点
四、取色器功能
1、定位方法:鼠标释放事件
2、机器人类:Robot
二、绘制多边形
1、第一次鼠标按下和释放:绘制一条直线
2、后续图形绘制:本次释放点和上一次释放点连线(设置标志flag来区分是第一次还是后续绘制)
3、双击,封闭图形(当前点击位置和最开始鼠标按下的位置连线,并将flag标志还原,可以试试不还原会出现的效果)
三、喷桶功能
1、定位方法:鼠标拖动事件实现
2、随机数生成:Random
3.实现原理,在鼠标拖动附近绘制很多的原点
四、取色器功能
1、定位方法:鼠标释放事件
2、机器人类:Robot
3、实现原理:获取到鼠标点击时相对画板的那一个像素点的图片,拿到该图片的背景颜色,将该背景颜色设置成画笔的颜色
源代码:
DrawBorder类: