如何旋转矩形?

时间:2012-12-31 20:54:41

标签: java graphics2d rectangles affinetransform

以下是绘制我角色左腿的示例:

g2d.fillRect(pX + (headW - bodyW)/2, pY + headH + bodyH, legW, legH); //left leg

我知道如何用AffineTransform s旋转图像,如下所示:

AffineTransform tr = g2d.getTransform();
tr.rotate(Math.toRadians(rotAmount));
g2d.drawImage(playerI, tr, null);

如何使用AffineTransform旋转此矩形?我做不了类似的事情:

g2d.rotate(Math.toRadians(rotAmount));

因为这会旋转我的整个人。我怎么才能只旋转腿?

2 个答案:

答案 0 :(得分:2)

没关系,我发现了。

AffineTransform old = g2d.getTransform();
g2d.rotate(Math.toRadians(lLegRot));
g2d.fillRect(pX + (headW - bodyW)/2, pY + headH + bodyH, legW, legH); //left leg
g2d.setTransform(old);
g2d.rotate(Math.toRadians(rLegRot));
g2d.fillRect(pX + headW - legW - (headW - bodyW)/2, pY + headH + bodyH, legW, legH); //right leg

较新的旋转覆盖较旧的旋转,同时保持先前旋转的物体完好无损。要重置轮换,请执行g2d.setTransform(old);

答案 1 :(得分:0)

如果你决定使用java.awt.geom,你可以使用rotate(someAngle)方法。