重绘之画图板

本文介绍了一种高效的画图板重绘方法。通过创建一个包含各种图形的队列,并在重绘时遍历队列中的图形进行绘制,实现复杂图形的快速重绘。文章详细解释了如何使用接口和类来组织不同类型的图形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。
画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就可以取出队列中的所以图形,然后绘制。
首先我们可以创建一个接口,命名为shape(),里面只有draw()一个方法,这样我们建其他图形类时都可以继承这个接口,例如
public class Rect implements Shape{
int x,y,width,height;

public Rect(int x, int y, int width, int height) {
super();
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}

public void draw(Graphics g) {
g.drawRect(x, y, width, height);

}

}
这样我们每在画图板上绘制一个图形,都同时把这个图形加入队列list中,重绘时只要把每个图形取出来,然后调用它的draw()方法,这样就全部绘制出来了。
JPanel drawpanel =new JPanel(){

public void paint(Graphics g){

super.paint(g); for(int i=0;i<list.size(); i++){
Shape shape = (Shape)list.get(i);
shape.draw(g);
}
}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值