java - 使用鼠标拖动绘制三角形(如何使用鼠标拖动移动先前绘制的三角形)

标签 java mouse drag

如何使用鼠标拖动将三角形移动到新位置(之前是使用鼠标拖动绘制的)?

...
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() {

/* 我不知道如何将整个三角形移动(拖动)到新位置,然后删除以前绘制的三角形。 mouseDragged 方法仅使用鼠标拖动绘制一个新三角形:-( */

    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

最佳答案

当您开始拖动时,您必须检测当前鼠标位置是否位于现有多边形之一上,并标记起始位置

此时,您不添加新的多边形,而是添加移动到现有多边形的不同点的数量并重新绘制

关于java - 使用鼠标拖动绘制三角形(如何使用鼠标拖动移动先前绘制的三角形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485367/

相关文章:

macos - Mac 鼠标坐标!= 窗框?

ios - 无法拖动或移动自定义 NSWindow

java - SwipeyTabsSampleActivity 如何没有生成编译错误?

java - 没有表单登录的Spring Security

qt - 在QML中拖动元素时如何实时获取鼠标坐标?

wpf - 释放鼠标捕获并让鼠标点击通过

java - 分发一个 jar

java - PreparedStatement 带参数的最大查询未在 Java 中执行

javascript - react 拖放 : Div Refuses Drag

image - 如何更改IKImageBroswerView拖动图像