Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2011, 21:10
amerkmif
 
Fecha de Ingreso: octubre-2009
Mensajes: 29
Antigüedad: 14 años, 7 meses
Puntos: 0
Ayuda en java translacion de figura

estoy haciendo un programa donde tengo que mover un triangulo(translacion) y pues he podidio

implementar esta parte del codigo y el problema es que el metodo dragged no me esta funcionando la figura geometrica que estoy arrastrando es un triangulo

si me pueden ayudar se lo agrdeceria


Código:
public class InterfazTangram extends Canvas implements MouseMotionListener{
	
	 private boolean arrastrando = false;
	 
	 //x en la que estaba anteriormente el ratón.
	 private int xAnteriorRaton;
	 //y en la que estaba anteriormente el ratón
	 private int yAnteriorRaton;
	 
	//x en la que estaba anteriormente el ratón 1.
	 private int xAnteriorRaton1;
	 //y en la que estaba anteriormente el ratón 1.
	 private int yAnteriorRaton1;
	 
	//x en la que estaba anteriormente el ratón 2.
	 private int xAnteriorRaton2;
	 //y en la que estaba anteriormente el ratón 2.
	 private int yAnteriorRaton2;
	    
	 int coordX[ ] = { 50,100,150};
	 int coordY[ ] = { 100,150,150};
	 
	 public InterfazTangram()
	 {
		 addMouseMotionListener(this);
	 }

	
	 public void paint(Graphics g)
	    {
	        g.setColor(Color.RED);
	        //g.fillRect(coordX,coordY,3);
	        //g.setColor(Color.blue);
	        g.fillPolygon(coordX, coordY, 3);
	       // g.drawLine(alto, ancho, x, y); 
	        
	        
	    }

	@Override
	public void mouseDragged(MouseEvent e) {
		// TODO Auto-generated method stub
		// Si comienza el arrastre ...
        if (!arrastrando)
        {
          // ... y el ratón está dentro del rectángulo
        	if (estaDentro(e))
            {
              // Se guardan las posiciones del ratón
                xAnteriorRaton = coordX[0];
                yAnteriorRaton = coordY[0];
                
                xAnteriorRaton1 = coordX[1];
                yAnteriorRaton1 = coordY[1];
                
                xAnteriorRaton2 = coordX[2];
                yAnteriorRaton2 = coordY[2];
                
                // y se marca que ha comenzado el arrastre.
                arrastrando = true;
            }
        }
        else
        {
          // Si ya había empezado el arrastre, se calculan las nuevas
          // coordenadas del rectángulo
            coordX[0] = (coordX[0] + e.getX()) - xAnteriorRaton;
            coordY[0] = (coordY[0] + e.getY()) - yAnteriorRaton; 
            coordX[1] = (coordX[1] + e.getX()) - xAnteriorRaton1;                       
            coordY[1] = (coordY[1] + e.getY()) - yAnteriorRaton1;
            coordX[2] = (coordX[2] + e.getX()) - xAnteriorRaton2;            
            coordY[2] = (coordY[2] + e.getY()) - yAnteriorRaton2;
           
            
            // Se guarda la posición del ratón para el siguiente cálculo
            xAnteriorRaton = e.getX();
            yAnteriorRaton = e.getY();
            xAnteriorRaton1 = e.getX();
            yAnteriorRaton1 = e.getY();
            xAnteriorRaton2 = e.getX();
            yAnteriorRaton2 = e.getY();
                    
            // y se manda repintar el Canvas
            repaint();
        }
		
	}
	
	 private boolean estaDentro(MouseEvent e)
	    {
		 
		 
	        if (
	            (e.getX() > coordX[0] && e.getX() > coordX[1] && e.getX() > coordX[2] )
	        &&  (e.getX() < (coordX[0] + (coordX[2]-coordX[1]))) 
	        &&  (e.getY() >coordY[0] && e.getY() > coordY[1] && e.getX() > coordY[2]) 
	        &&  (e.getY() < (coordY[0] + (coordY[0]-coordY[1]))))
	        {
	        	
	            return true;
	        }

	        return false;
	    }
	    

	@Override
	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub
		 arrastrando = false;
	}
	
	
	 public static void main(String[] args)
	    {
	        JFrame v = new JFrame("Arrastrar Grafico");
	        InterfazTangram c = new InterfazTangram();
	        v.getContentPane().add(c);
	        v.setSize(500,500);
	        //v.pack();
	        v.setVisible(true);
	        v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    }
	

}