Ayuda con un GeneralPath

kbronez
18 de Abril del 2003
Hola.
Estoy haciendo un pequeño programita que hace diferentes tipos de lineas segun se escoja, y estoy haciendo una linea segmentada con un GeneralPath(parte de java.awt.geom).
El problema es que estoy almacenando mis lineas en un vector y repinto el vector cada vez, pero quedan dos puntos sueltos del GeneralPath y se unen con cada linea que agrego al vector.
Alguien me puede ayudar...???
Este es el codigo de la clase encargada de hacer la linea segmentada.

import java.awt.geom.*;
import java.awt.*;
public class ManejadorDeLineaSegmentada extends ManejadorDeLinea {

private Rectangle ptInicio,ptFin,ptUno,ptDos,area;
private GeneralPath segmentada;
private Point2D.Double uno,dos,puntos[],puntos2[];


public ManejadorDeLineaSegmentada(Point2D.Double pi,Point2D.Double pf){
System.out.println("ENTRO AL consructor manejadorSegmentado");
this.inicio=pi;
this.fin=pf;
System.out.println(pi+" "+pf);
ptInicio=new Rectangle((int)inicio.x-2,(int)inicio.y-2,5,5);
ptFin=new Rectangle((int)fin.x-2,(int)fin.y-2,5,5);
ptUno=new Rectangle((int)((inicio.x+fin.x)/2)-2,(int)(inicio.y)-2,5,5);
ptDos=new Rectangle((int)((inicio.x+fin.x)/2)-2,(int)(fin.y)-2,5,5);
uno=new Point2D.Double((inicio.x+fin.x)/2, inicio.y);
dos=new Point2D.Double((inicio.x+fin.x)/2,fin.y);
puntos=new Point2D.Double[]{inicio,uno,dos,fin};
segmentada = new GeneralPath(GeneralPath.WIND_EVEN_ODD,4);
}

public ManejadorDeLineaSegmentada(Linea line){
System.out.println("constructor lineaSegmentada sin parametros");
//System.out.println(line.getPuntoInicial()+" "+line.getPuntoFinal());
inicio=line.getPuntoInicial();
fin=line.getPuntoFinal();
ptInicio=new Rectangle((int)inicio.x-2,(int)inicio.y-2,5,5);
ptFin=new Rectangle((int)fin.x-2,(int)fin.y-2,5,5);
ptUno=new Rectangle((int)((inicio.x+fin.x)/2)-2,(int)(inicio.y)-2,5,5);
ptDos=new Rectangle((int)((inicio.x+fin.x)/2)-2,(int)(fin.y)-2,5,5);
uno=new Point2D.Double((inicio.x+fin.x)/2, inicio.y);
dos=new Point2D.Double((inicio.x+fin.x)/2,fin.y);
System.out.println(inicio+" "+fin);
segmentada = new GeneralPath(GeneralPath.WIND_EVEN_ODD,4);
puntos=new Point2D.Double[]{inicio,uno,dos,fin};

}


public void dibujar(Graphics pintor){


System.out.println("Entro al paint de la segmentada");
Graphics2D pintor2d=(Graphics2D)pintor;
pintor2d.setStroke(new BasicStroke(5.0f));
pintor2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
//area = new Rectangle(size);


//WIND_NON_ZERO

segmentada.moveTo ((float)puntos[0].x,(float)puntos[0].y);
for (int index = 1; index < 4;index++ ) {
segmentada.lineTo((float)puntos[index].x, (float)puntos[index].y);
}
pintor2d.setPaint(Color.black);
pintor2d.draw(segmentada);
pintor2d.setColor(Color.red);
pintor2d.fill(ptInicio);
pintor2d.fill(ptUno);
pintor2d.fill(ptDos);
pintor2d.fill(ptFin);

}
public void update (Graphics g){
dibujar(g);
}


}

Agradesco cualquier ayuda.