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

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


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

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


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

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


因为那使我整个人旋转。如何只旋转腿?

最佳答案

没关系,我发现了。

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

10-08 19:33