旋转图像的 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);
我到处查看是否有人遇到了与我相同的问题,但似乎只有我一个人遇到此错误。
所以我在 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);