0

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

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

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

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

非常感谢任何帮助。

4

2 回答 2

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);

如果你想做动画 a BufferedImage,这些链接应该是有趣的:

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

于 2012-06-27T02:40:35.157 回答
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() 方法实际上是在进行图像反转。

于 2012-06-27T01:26:59.980 回答