2

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

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

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

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

如何用 旋转这个矩形AffineTransform?我不能做这样的事情:

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

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

4

2 回答 2

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);.

于 2012-12-31T21:02:09.980 回答
0

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

于 2012-12-31T21:04:59.850 回答