0

我正在用 java 编写一个程序,该程序具有用户可以选择然后根据鼠标移动旋转或拉伸的图形对象。我快要开始工作了,但我遇到的问题是想办法让形状的调整随着鼠标的移动自然地起作用。

我有一个 MouseListener 设置如下:

private class MouseHandler extends MouseAdapter
{
    public void mousePressed(MouseEvent e)
    {
         currentClickPoint = e.getPoint();
    }
}

和 MouseMotionListener 设置如下:

private class MouseMotionHandler extends MouseMotionAdapter
{
    public void mouseDragged(MouseEvent e)
    {
         objectRotateAngle = currentClickPoint.getY() - e.getY();
         objectWidth += currentClickPoint.getX() - e.getX();
    }
}

显然,这是一个简化版本,但问题是我希望鼠标向右移动时宽度增加,鼠标向左移动时宽度减小,以及旋转角度根据鼠标垂直移动增加/减少. 现在,宽度不会开始减小,直到您通过 currentClickPoint 的 X 位置向左移动,反之亦然。基于鼠标 Y 移动进行旋转的问题是,每次您开始向上移动鼠标进行旋转时,角度都会设置回 0。

程序需要无缝响应方向的变化,而无需在调整开始时将宽度或角度设置为 0。为此目的,有没有人有更好的方法来检测鼠标移动的方向?

4

1 回答 1

0

我建议存储原始鼠标位置(即用户第一次能够调整形状大小时的位置),然后通过直接添加当前位置和原始位置之间的差异或通过缩放来修改形状的宽度差异然后添加它。

于 2013-07-28T05:07:52.740 回答