Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以同时使用变换和图像绘制坐标吗?_Java - Fatal编程技术网

Java 可以同时使用变换和图像绘制坐标吗?

Java 可以同时使用变换和图像绘制坐标吗?,java,Java,我正在尝试将一个移动的动画精灵转变为一个自身的反面。我知道的唯一方法是: AffineTransform transform = new AffineTransform(); transform.scale(-1, 1); transform.translate(-sprite.getWidth(), 0); g.drawImage(imageFromSprite, transform, null); 因为似乎没有通过变换输入坐标的方法,这意味着我无法继续运行在屏幕上移动动画精灵的代码 有没有

我正在尝试将一个移动的动画精灵转变为一个自身的反面。我知道的唯一方法是:

AffineTransform transform = new AffineTransform();
transform.scale(-1, 1);
transform.translate(-sprite.getWidth(), 0);
g.drawImage(imageFromSprite, transform, null);
因为似乎没有通过变换输入坐标的方法,这意味着我无法继续运行在屏幕上移动动画精灵的代码

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


非常感谢您的帮助。

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

例:


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

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

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);
如果要为
缓冲区图像制作动画,请注意以下链接:


http://www.permadi.com/tutorial/javaImgObserverAndAnimGif/

通过线程可能实现什么类是
imageFromSprite
?这是什么
drawImage()
方法?我在上面找不到它。但我是否仍然需要将坐标传递到draw方法中,最终意味着我将无法转换?你能举个例子吗?我认为这行不通,因为transform.translate(-sprite.getWidth(),0);实际上不会对图像进行任何更改。只有通过g.drawImage渲染的图像似乎实际应用了变换。但是,扩展Graphics2D并编写新的g.transformAndDrawImage重载可能会起作用,但是我不知道如何查看图形代码,以便编写自定义绘图方法。
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);