Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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
在JavaAWT中旋转图像_Java_Awt_Java 2d - Fatal编程技术网

在JavaAWT中旋转图像

在JavaAWT中旋转图像,java,awt,java-2d,Java,Awt,Java 2d,我有一个小程序运行的游戏。在那里,有一枚导弹,它应该指向上、下、左或右。一种方法是创建4个图像(每个方向一个),但这太复杂了 有人知道在图像加载到程序中后旋转图像的方法吗?您可以使用java awt中的小程序来旋转图像 import java.applet.Applet; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.AffineTransform

我有一个小程序运行的游戏。在那里,有一枚导弹,它应该指向上、下、左或右。一种方法是创建4个图像(每个方向一个),但这太复杂了


有人知道在图像加载到程序中后旋转图像的方法吗?

您可以使用java awt中的小程序来旋转图像

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.net.URL;

public class RotateImage extends Applet {

private Image image;

AffineTransform identity = new AffineTransform();

 private URL getURL(String filename) {
 URL url = null;
 try {
 url = this.getClass().getResource(filename);
 }
catch(Exception e){}
return url;
}

public void init() {
image = getImage(getCodeBase(), "image.jpg");
}

public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
AffineTransform trans = new AffineTransform();
trans.setTransform(identity);
trans.rotate( Math.toRadians(45) );
g2d.drawImage(image, trans, this);
}
}

代码中最复杂的部分是仿射变换对象。根据Sun的AffineTransform API,“AffineTransform类表示二维仿射变换,该变换执行从二维坐标到其他二维坐标的线性映射,从而保持直线的“直线度”和“平行度”。“如果您对该类进行一点试验(或继续阅读API),您将看到它不仅可以用于旋转,还可以用于缩放、翻转和剪切图像。

好的,我将根据您的问题编辑答案。您可以在代码末尾看到g.drawImage。。。为什么getURL()在那里?我在你的代码中找不到它的任何用途。请使用StackOverflow的搜索功能。以下是几种旋转图像的方法: