画板重绘_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 画板重绘

画板重绘

 2011/10/28 8:18:15  gogoalong  http://gogoalong.iteye.com  我要评论(0)
  • 摘要:画板重绘:我在制作了自己的画板,能够实现一些功能,比方说直线,圆,矩形等,但我发现一个问题,图形画在面板上的后,我们经过缩放后,原来画的东西又不在了,我又得重新画,但和原来的不一样了。怎么实现重绘呢???我们画的东西有直线,有矩形,有圆,那么怎样使得他们按照原来我们画的的那样重绘出来。直线,圆,矩形都是图形,拥有相同的方法,和属性,所以可以有个图形父类publicabstractclassNetJavaShape{publicColorcolor;publicabstractvoiddraw
  • 标签:重绘
画板重绘
 
  我在制作了自己的画板,能够实现一些功能,比方说直线,圆,矩形等,但我发现一个问题,图形画在面板上的后,我们经过缩放后,原来画的东西又不在了,我又得重新画,但和原来的不一样了。
  怎么实现重绘呢???
  我们画的东西有直线,有矩形,有圆,那么怎样使得他们按照原来我们画的的那样重绘出来。
  直线,圆,矩形都是图形,拥有相同的方法,和属性,所以可以有个图形父类
 public abstract class NetJavaShape {
	public  Color color;
	public abstract void draw (java.awt.Graphics g);
	
  }

直线作为单独的类
public class ImpLine extends NetJavaShape{
	private int x1,x2,y1,y2;
	
	public  ImpLine(int x1,int y1,int x2,int y2,Color color)
	{
		this.x1=x1;
		this.x2=x2;
		this.y1=y1;
		this.y2=y2;
		this.color=color;
	}
	public void draw(java.awt.Graphics g)
	{
		g.setColor(color);
		g.drawLine(x1, y1, x2, y2);
	}
}

  首先,我们得有个图形类,用来存储图形对象,这样我们可以定义一个图形类对象队列,通过这个队列来管理图形对象。
  当我们监听shapename后,画出图形,并将shape加到shapes.add(shape);通过队列添加,因为我们不知道要画多少图形。
        private MyQueue<NetJavaShape> shapes;
        NetJavaShape shape = new ImpLine(x1, y1, x2, y2, color);
	if (type.equals("直线"))
		shape = new ImpLine(x1, y1, x2, y2, color);
	shape.draw(gr);
	// 将绘制过的形状对象保存到队列
	shapes.add(shape);

这样我们就将所画的图形对象加入到了shapes队列中了,接下来我们要取出这些对象,实现重新画出,在Drawpanel类中实现重绘
public class DrawPanel extends JPanel {
public void paint(Graphics g)
      {
	super.paint(g);
	for(int i=0;i<DrawListener.shapes.size();i++){
		NetJavaShape   shape=DrawListener.shapes.get(i);
		shape.draw(g);
			}
	}
}

这样就可以实现重绘了
发表评论
用户名: 匿名