我目前正在尝试旋转图像,然后在顶部绘制一个不旋转的图像。但每当我使用时:
g2d.rotate(Math.toRadians(rot), (x+15), (y+15));
之后绘制的每个图像也会旋转。有什么方法可以旋转一个图像而不是旋转其余图像(这真的很难解释)。
这是我的绘画方法:
public void draw(Graphics2D g2d)
{
move();
if(bo.px==+1)rot--;
if(bo.px==-1)rot++;
g2d.rotate(Math.toRadians(rot), (x+15), (y+15));
g2d.drawImage(img, x, y, null);//this should rotate
g2d.drawImage(shine, x, y, null);//this shouldn't
}
提前致谢。
答案 0 :(得分:4)
您可以保存原始变换,旋转并绘制第一张图像,然后在绘制第二张图像之前应用原始变换。
尝试
AffineTransform originalTransform = g2d.getTransform();
g2d.rotate(Math.toRadians(rot), (x+15), (y+15));
g2d.drawImage(img, x, y, null);
g2d.setTransform(originalTransform);
g2d.drawImage(shine, x, y, null);
答案 1 :(得分:1)
绘制旋转后的图像后,需要执行反向旋转,以使物体恢复原始的非旋转状态。
public void draw(Graphics2D g2d)
{
move();
if(bo.px==+1)rot--;
if(bo.px==-1)rot++;
g2d.rotate(Math.toRadians(rot), (x+15), (y+15));
g2d.drawImage(img, x, y, null);//this should rotate
g2d.rotate(-Math.toRadians(rot), (x+15), (y+15)); // this resets the rotation!
g2d.drawImage(shine, x, y, null);//this shouldn't
}