gpt4 book ai didi

java - 如何拖动多边形?

转载 作者:行者123 更新时间:2023-12-02 06:19:49 24 4
gpt4 key购买 nike

我使用java.awt.Polygon在Java中绘制了一个多边形。我想用鼠标移动多边形(我想拖动它)。我知道我必须在 addMouseMotionListener 中使用 mouseDragged 方法。这样我就可以知道鼠标拖动多边形的路径的 (x,y) 坐标。

但问题是我不知道如何处理获取的 (x,y) 来移动多边形。这是代码的一部分:

public void mouseListeners(DrawEverything det) {
det.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {

if( isMouseInMe(evt.getX(), evt.getY())){//this "if" checks if the cursor is in the shape when we drag it

int xTmep , yTemp ;
xTmep = (int) (evt.getX() - xMousePressed) ;//xMousePressed--> the x position of the mouse when pressed on the shape
yTemp = (int) (evt.getY() - yMousePressed) ;

for(int i = 0 ; i < nPoints ; ++i){
xPoints[i] += xTmep;//array of x-positions of the points of polygon
yPoints[i] += yTemp;
}
}
}
});

这部分是我遇到问题的主要部分:

for(int i = 0 ; i < nPoints ; ++i){
xPoints[i] += xTmep;
yPoints[i] += yTemp;
}

最佳答案

看起来好像您正在将鼠标当前位置和多边形位置之间的差异添加到每个帧上多边形的新位置。您要做的只是添加鼠标的新位置与上次调用 mouseDragged() 时的位置之间的差异。

您可以相当轻松地做到这一点。在 for 循环后,添加以下内容:

xMousePressed = evt.getX();
yMousePressed = evt.getY();

然后,下次调用 mouseDragged() 时,它将更新多边形相对于其在前一帧中的位置的位置。

关于java - 如何拖动多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com