在另一个图像下旋转一个图像

时间:2011-10-08 16:05:34

标签: java image rotation graphics2d

我目前正在尝试旋转图像,然后在顶部绘制一个不旋转的图像。但每当我使用时: 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
}

提前致谢。

2 个答案:

答案 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
}