Java绘图的保存功能
由于Java图形化界面的窗体在移动、最小化等行为发生时,会重新调用paint方法,导致原来画好的图形消失。
实现图形保存的基本思路为,存储原有图形的基本特征,窗体改变后重新绘制。
以直线为例,实现图形的保存。
1.建立数组保存直线数据
package csl0327;
import java.awt.Graphics;
public class Shape {
public int x1,y1,x2,y2;
public String name;
//构造方法
public Shape(int x1,int y1,int x2,int y2,String name){
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.name = name;
}
//根据保存数据还原图形
public void drawShape(Graphics g){
switch(name){
case "直线":
g.drawLine(x1, y1, x2, y2);
break;
}
}
}
2.重写paint方法
package csl0327;
import java.awt.Graphics;
import javax.swing.JFrame;
public class MyFrame extends JFrame {
public Shape[] arrShape;
public void paint(Graphics g) {
super.paint(g);
System.out.println("重绘");
for (int i=0;i<arrShape.length;i++) {
Shape shape=arrShape[i];
if(shape!=null) {
shape.drawShape(g);
}
}
}
}