旋转图像的 setTransform 会产生意想不到的结果

setTransform to rotate Images produces unexpected results

我到处查看是否有人遇到了与我相同的问题,但似乎只有我一个人遇到此错误。

所以我在 Java 中使用 Swing。我有一个 class Player 来绘制玩家的图像。但是,每次我尝试使用 setTransform 旋转图像时,播放器的第二个实例都会缩小两倍。

这是我绘制方法的代码:

AffineTransform transform = new AffineTransform();
transform.rotate(this.getOrientationRadians(), getX()+getWidth()/2,getY()+getHeight()/2);

g.setTransform(transform);
g.drawImage(image, (int)(getX()), (int)(getY()), null);

g.setTransform(new AffineTransform());

通过覆盖 Graphics 对象的变换,您也覆盖了系统比例(我假设设置为 200%)施加的缩放。

限制使用 Graphics2D::rotate 或将转换传递给 drawImage 调用。

AffineTransform transform = new AffineTransform();
transform.translate(getX(), getY());
transform.rotate(getOrientationRadians());

g.setTransform(transform);
g.drawImage(image, transform, null);