2009-09-28 12 views
0

Comment déplacer un triangle vers un nouvel emplacement à l'aide de la souris (dessiné précédemment à l'aide de la souris)?Dessiner un triangle à l'aide de la souris (comment déplacer le précédent triangle dessiné à l'aide de la souris)

... 
java.util.List<Polygon> triangles = new LinkedList<Polygon>(); 
Point startDrag, endDrag, midPoint; 
Polygon triangle; 
... 
public PaintSurface() {  
    this.addMouseListener(new MouseAdapter() { 
    public void mousePressed(MouseEvent e) { 
    startDrag = new Point(e.getX(), e.getY()); 
    endDrag = startDrag; 
    repaint(); 
    }//end mousePressed 

public void mouseReleased(MouseEvent e) { 
... 
    int[] xs = { startDrag.x, endDrag.x, midPoint.x }; 
    int[] ys = { startDrag.y, startDrag.y, midPoint.y };  
    triangles.add(new Polygon(xs, ys,3));      
    startDrag = null; 
    endDrag = null; 
    repaint(); 
}//end mouseReleased 
... 


});//end addMouseListener 

    this.addMouseMotionListener(new MouseMotionAdapter() { 

/* Je ne sais pas comment déplacer (glisser) tout le triangle à un nouvel emplacement et plus tard supprimer le triangle précédent dessiné. La méthode mouseDragged ne dessiner un nouveau triangle par glisser la souris :-( */

public void mouseDragged(MouseEvent e) { 
     endDrag = new Point(e.getX(), e.getY()); 
     repaint(); 
    }//end mouseDragged 
     }//end paintSurface  

     //Draw triangles 
     public void paint(Graphics g) { 
      Graphics2D g2 = (Graphics2D) g; 
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 

      //draw the thickness of the line 
      g2.setStroke(new BasicStroke(1)); 
      g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.00f));   
      g2.setPaint(Color.black);//set the triangle color 
      for (Polygon triangle : triangles) g2.drawPolygon(triangle); 
      if (startDrag != null && endDrag != null) { 
       g2.setPaint(Color.red); 
       g2.drawPolygon(triangle); 
      } 
      }//end paint  

       }//end private class PaintSurface 

Répondre

2

lorsque vous commencez à vous glisser devez détecter si votre position actuelle de la souris est sur l'une des Polygones existants, marque aussi le départ emplacement

Quand il est vous n'ajouter un nouveau polygone, mais vous ajoutez le montant déplacé aux différents points du polygone existant et repeindre

+0

« montant déplacé » est-il le nouveau point? – Jessy

+0

pas son différent entre le point de départ de la traînée et le point final de la traînée dites que vous faites glisser de 5,10 à 15,25 vous avez déplacé 10 et 15 donc vous ajoutez 10 à tous les x du triangle en 15 à tous y – Peter