画板项目:
一、有总体的思路是很重要的。
1. 创建窗体,添加三个面板,按钮区、画板区和颜色区。
2. 添加按钮,设置布局
3. 安装按钮监听器
4. 获取画笔
5. 功能的实现
二、因为代码较长,所以要创建多个类,这时候就需要注意传参的问题。例如,在MypanelCenter类中要用drawBoard类中的一个属性,往往可以把drawBoard的对象传进MypanelCenter类中 MyPanelCenter panelCenter=new MyPanelCenter(this);在 MypanelCenter类中必须要重写构造函数。
public drawBoard1 d;
public MyPanelCenter(drawBoard1 d1){
d = d1;
}
三、 this的用法
This是指本类中的对象。在(二)中,如果把 public drawBoard1 d;语句改成 public drawBoard1 d1;这时d1与构造函数的形参一致,可以用this。此时:构造函数应为:
this.d1 = d1;
四、实现按钮的功能
要设置按钮的命令名,安装鼠标监听器,设置command变量得到命令名
//画直线
if("image10".equals(command)){
g.drawLine(x1,y1,x2,y2);
}
然后画相应的图形
五、图形重绘
图形在缩小或是有些移动时画出来的图形会消失,所以要进行图形重绘。重绘的方法:
1、用多态性实现,这时要定义多个方法。这些方法中属性都一样,只有画图形的方法不同,所以可以使用继承减少代码量。
2、Paint方法 用于绘制组件, 绘制的图形需要在哪个组件上,则重写相应组件的paint方法。
六、画笔功能的实现
1、直线、矩形、圆角矩形、椭圆有直接的方法调用。多边形实际上也是画直线。但是最后要把图形封闭。
2、铅笔、刷子、笔擦是同一类型,是通过画直线的方法实现,笔擦和刷子与铅笔的不同是笔的颜色和大小。
x2=e.getX();
y2=e.getY();
g.drawLine(x1, y1, x2, y2);
x1=x2;
y1=y2;笔的大小要用Graphics2D类实现。值得注意的是:在用完笔擦和刷子后要还原笔使用前的样子。
喷漆与这三个也有相同之处,只不过喷漆是由很多点组成,所以画直线时点,且要用到随机数, g.drawLine(x2+value1, y2+value2, x2+value1, y2+value2);
3、吸管
吸管是有点复杂的,先用Robot类创建对象,截取图片,获取像素,然后才能得到颜色,最后是画线。