Java - 旋转Rectangle2D并设置长度?

时间:2015-04-18 06:03:21

标签: java affinetransform drawrectangle

我试图围绕Point旋转一个Rectangle并动态设置它的长度。这就是我到目前为止所做的:

Rectangle2D myRect = new Rectangle2D.Double(point.x - GameValues.ROPE_WIDTH, point.y, point.x + GameValues.ROPE_WIDTH, point.y + ropeLength);
    AffineTransform at = AffineTransform.getRotateInstance(
            Math.toRadians(rotation - 180), point.x, point.y);
    rope = at.createTransformedShape(myRect);

当我绘制形状时,它没有按预期运行,矩形宽度随着我移动Point而变化。我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

你误解了Rectangle2Ds的定义方式。对于Rectangle2D,我建议设置一个与point(直接)无关的长度,然后使用仿射变换来缩放它。

问题是Rectangle2D没有像你想象的那样在(x1,y1)和(x2,y2)之间定义;它是(x1,y1)和(Δx,Δy),或偏移。

更改您的代码以使用此功能:

Rectangle2D myRect = new Rectangle2D.Double(point.x, point.y, GameValues.ROPE_WIDTH, ropeLength);

或者它的一些排列,你应该清楚。