【问题标题】:Rotating an image in java awt [duplicate]在java awt中旋转图像[重复]
【发布时间】:2014-07-02 14:14:42
【问题描述】:

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

有谁知道我在加载到程序后旋转图像的方法?

【问题讨论】:

标签: java awt java-2d


【解决方案1】:

您可以按照此示例使用 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);
}
}

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

【讨论】:

  • 好的,我会根据你的问题编辑答案
  • 可以看到代码末尾的g.drawImage
  • 嗯...为什么 getURL() 在那里?我在您的代码中找不到任何用途。
猜你喜欢
  • 1970-01-01
  • 2013-04-02
  • 2015-07-04
  • 2018-02-22
  • 2021-05-01
  • 1970-01-01
  • 2013-04-22
相关资源
最近更新 更多