这是绘制角色左腿的示例:
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);
。