gpt4 book ai didi

java - MouseDrag 绘制的正方形未按预期工作

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

 @Override
public Shape getShape() {
final Rectangle2D.Double result = new Rectangle2D.Double();
result.setFrameFromDiagonal(getStart(), getEnd());
//FIX this is causing square to move when going opposite direction
result.setRect(result.getX(), result.getY(),
result.getHeight(), result.getHeight());
return result;
}

这是我使用 Rectangle2D.Double 绘制正方形的代码。 getStart() 和 getEnd() 是从 mouseDrag 事件返回的点。当我向右或向上拖动时,它会按预期工作并创建一个正方形。当我向左或向下拖动时,正方形会随着拖动而移动。我对 Java swing 和绘制组件相当陌生。想知道是否有人知道造成这种情况的原因以及原因?

最佳答案

您需要考虑一些专业:

  1. 保存鼠标单击时的第一个坐标:x,y
  2. 保存鼠标拖动 x2,y2 时的最后一个坐标
  3. 设置最小 x 和 y 坐标作为 setRect 的起点:Math.min(x,x2);
  4. 利用坐标差的绝对值计算矩形的高和宽:Math.abs(x-x2);
<小时/>
px = Math.min(x,x2);
int py = Math.min(y,y2);
int pw=Math.abs(x-x2);
int ph=Math.abs(y-y2);
result.setRect(px, py, pw, ph);

关于java - MouseDrag 绘制的正方形未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43884687/

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