图形保存
在窗体上绘制图形,实现铅笔和直线等功能后,发现任意的改变窗体大小或最小化窗体都会导致已经绘制的图形自动消失然后出现了空的窗体。这是因为每当窗体发生改变后,窗体会自动调用窗体.paint()的方法,而方法中只包含了重写按钮和改变颜色的功能,并没有储存已经画在窗体上的图形所以导致了图形自动消失情况
实现功能时:
改变窗体大小或最小化窗体后:
图形保存的思路
图形的储存(以铅笔为例):
1.由于图形是由监听器(接口)的子类中的各种方法实现的,我们可以在每个方法中在每画完一个图形后储存图形的名称和点坐标在储存为子类的属性。又因为我们会画多条直线,所以需要储存多个图形,这里用到了array来储存数据。
public class DrawMouse implements MouseListener,ActionListener,MouseMotionListener{
public Graphics gr;
public int x1,x2,y1,y2;
public Color color;
//定义Shape数组,保存图形对象
public Shape[] arrShape = new Shape[10000];
//操作数组的下标
public int index=0;
public void mousePressed(MouseEvent e){
x1 = e.getX();
y1 = e.getY()