旋转几个图像 - Java

时间:2013-09-02 17:56:13

标签: java rotation graphics2d

我正在用Java创建一个飞行雷达模拟器,用于一个类项目。

到目前为止,我已经能够显示许多小型飞机图像以一定的方向和不同的速度在雷达上移动。

我的问题是如何旋转每个飞机图像以跟随其在雷达中的方向。 Radar http://img694.imageshack.us/img694/1746/5d8z.png

该线显示了飞机移动的方向,应该指向。

2 个答案:

答案 0 :(得分:1)

在Java中有几种方法可以做到这一点。 AffineTransform有效,但我发现我无法轻松调整图像大小以处理非90度旋转。我最终实现的解决方案如下。弧度的角度。

public static BufferedImage rotate(BufferedImage image, double angle) {
    double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle));
    int w = image.getWidth();
    int h = image.getHeight();
    int newW = (int) Math.floor(w * cos + h * sin);
    int newH = (int) Math.floor(h * cos + w * sin);
    GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment()
                                                  .getDefaultScreenDevice()
                                                  .getDefaultConfiguration();

    BufferedImage result = gc.createCompatibleImage(newW, newH, Transparency.TRANSLUCENT);
    Graphics2D g = result.createGraphics();
    g.translate((newW - w) / 2, (newH - h) / 2);
    g.rotate(angle, w/2, h/2);
    g.drawRenderedImage(image, null);
    g.dispose();
    return result;
}

答案 1 :(得分:0)

我假设您使用的是Java2d,因此您应该查看AffineTransform class