是否可以将变换和图像绘制坐标一起使用?

时间:2012-06-27 01:20:38

标签: java

我正在尝试将移动的动画精灵转换为自身的反转。我知道这样做的唯一方法是:

AffineTransform transform = new AffineTransform();
transform.scale(-1, 1);
transform.translate(-sprite.getWidth(), 0);
g.drawImage(imageFromSprite, transform, null);

因为似乎没有方法可以用变换输入坐标,这意味着我无法继续运行我的代码,这会在屏幕上移动动画精灵。

有没有办法转换图像并在指定坐标处绘制图像?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

给自己写一个执行转换并接受坐标作为参数的方法。

例如:

public void doTransformAndDraw(int x, int y)
{
    AffineTransform transform = new AffineTransform();
    //transform.scale(-1, 1);
    transform.translate(-sprite.getWidth(), 0);
    g.drawImage(sprite, x, y, null);
}

我假设transform.translate()方法实际上正在进行图像反转。

答案 1 :(得分:0)

转换图像不会影响您定位图像的能力,如下所示:

BufferedImage reversedImage = new BufferedImage(imageFromSprite.getWidth(),
        imageFromSprite.getHeight(), imageFromSprite.getType());

AffineTransform transform = new AffineTransform();
transform.scale(-1, 1);
transform.translate(-imageFromSprite.getWidth(), 0);

Graphics2D reversedImageGraphic = reversedImage.createGraphics();
reversedImageGraphic.drawImage(imageFromSprite, transform, null);

// top left is drawn at (0,60)
g.drawImage(imageFromSprite, 0, 60, null);

如果您想为BufferedImage制作动画,则应关注这些链接:

http://web.mit.edu/1.124/LectureNotes/images.html http://www.permadi.com/tutorial/javaImgObserverAndAnimGif/