java - 如何旋转矩形?

标签 java graphics2d rectangles affinetransform

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

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

关于java - 如何旋转矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105993/

相关文章:

java - 使用 ResponseBuilder 在位置 header 中强制相对 URI

java - 为什么 java.awt.Graphics.drawLine 异常慢?

java - 与 Graphics2d、 Canvas 和形状混淆

gps - 给定所有纬度/经度坐标,如何确定点是否在矩形内?

wpf - 如何对 XAML 中定义的矩形使用 IntersectsWith 方法

java - 泛型 - 无法转换为 T,其中 T 是类型变量

java - 为什么java枚举中的一些常量字段不是值?

java - java中解析字符串的正则表达式

Java Swing Graphics2D drawString 启动慢?

python - pygame.draw.rect() 不绘制另一个矩形