我的画图板1.0<细说5.另类处理,浅析多边形>

1.多边形图形
/*
* 多边形对象
*/
public class PolygonShape extends ShapeObject {
//保存多边形的点的队列
QueueList<Integer> Polygon=new QueueList<Integer>();

public QueueList<Integer> getPolygon(){
return Polygon;
}


/**
* 将数据放入队列的方法
* @param num:要放入的点的坐标
*/
public void addNum(int pointNum){
Polygon.add(pointNum);
}


}
2.存入数据
if("polygon".equals(str)){

if(counter==0){
//画图形后,创建一个新的多边形对象
PolygonShape polygon=new PolygonShape();

polygon.setnum(5);
x1=e.getX();
y1=e.getY();
counter++;
System.out.println("x1:"+x1+" y1:"+y1);

//保存到队列的坐标
polygon.addNum(x1);
polygon.addNum(y1);
System.out.println("保存了坐标000>"+polygon.Polygon.getsize());

}
else if(counter==1){
x2=e.getX();
y2=e.getY();
gp.drawLine(x1, y1, x2, y2);
tempX=x2;
tempY=y2;
//保存到队列的坐标
polygon.addNum(x2);
polygon.addNum(y2);
counter++;
System.out.println("保存了坐标111>"+polygon.Polygon.getsize());
}
else if(counter!=0&&counter!=1){
x2=e.getX();
y2=e.getY();
gp.drawLine(x2, y2, tempX, tempY);
tempX=x2;
tempY=y2;
//保存到队列的坐标
polygon.addNum(x2);
polygon.addNum(y2);
System.out.println("保存了坐标222>"+polygon.Polygon.getsize());
}

if(i==3&&"polygon".equals(str)){
counter=0;
x2=e.getX();
y2=e.getY();

gp.drawLine(x1, y1, x2, y2);
gp.drawLine(tempX, tempY, x2, y2);


polygon.addNum(x2);
polygon.addNum(y2);
System.out.println("保存了坐标");

//添加到队列
shape.add(polygon);
System.out.println("添加到队列中了");
}


3.取出多边形并画图
if(shapetype==5){
//创建一个多边形对象
PolygonShape polygon =(PolygonShape)type;
//多边形对象得到它所保存坐标的的队列;
QueueList<Integer> Polygon=polygon.getPolygon();
int carry[][]=new int[Polygon.getsize()/2][2];
int l=0;
for(int j=0;j<Polygon.getsize();j++){
System.out.println(Polygon.getnum(j));
}
for(int j=0;j<Polygon.getsize()/2;j++){
for(int k=0;k<2;k++){
carry[j][k]=Polygon.getnum(l);
l++;
}
}
for(int j=1;j<carry.length;j++){
gp.drawLine(carry[j-1][0],carry[j-1][1],carry[j][0],carry[j][1]);
if(j==carry.length-1){
gp.drawLine(carry[0][0],carry[0][1],carry[j][0],carry[j][1]);
}
}


多边形主要程序如上
这里的多边形主要是用了自定义链表
思路:
1.在画多边形的第一笔就创建一个多边形对象,然后添加坐标点。
这点很重要,读者可以自己体会,当初我在这里犯错误是还没有画图形就创建一个多边形对象,结果,我的程序变成了画一条线就创建一个多边形对象,结果始终无法保存数据,逻辑问题
2.将多边形多个点保存到“小盒子”中,然后放到图形“盒子”中。然后调用的时候遍历所有的点。

3.第2点有一个重要的拓展,即将这个小盒子看成所有图形的保存器,再在之前加上一个图形标签,这样很节约代码的空间。以后升级这个画图板可以沿着这个思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值