gpt4 book ai didi

java - 旋转图像滋扰

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:27 25 4
gpt4 key购买 nike

好吧,伙计们,我正在尝试制作一个小行星类型的游戏,我需要能够旋转图像,以便船的前部跟随我的鼠标。我已经寻找了几个小时,找到了一些东西,但没有一个能满足我的需要。

如果有人知道如何做到这一点,请分享!

提前致谢

这是我现在的代码

package Asteroids;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class Asteroids extends JFrame implements Runnable, MouseListener,
MouseMotionListener, KeyListener {

private Image dbImage;
private Graphics dbg;
int x, y, mx, my;
int a, b, c, degree;
double scale = 1.0;
ImageIcon shipIcon = new ImageIcon(this.getClass().getClassLoader()
.getResource("AstroidsShip.png"));
Image ship = shipIcon.getImage();

public static void main(String[] args) {
Asteroids frame = new Asteroids();
Thread thread = new Thread(frame);
thread.start();
}

public Asteroids() {
addMouseListener(this);
addMouseMotionListener(this);
addKeyListener(this);

setTitle("Astroids");
setSize(500, 500);
setBackground(Color.WHITE);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

x = getWidth() / 2 - 10;
y = getHeight() - getHeight() / 2;
}

public void run() {
while (true) {
try {

} catch (Exception e) {

}
}
}

public void paint(Graphics g) {
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
paintComponent(dbg);
g.drawImage(dbImage, 0, 0, this);
}

public void paintComponent(Graphics g) {
g.drawString("POS: " + mx + ", " + my, 10, 40);
System.out.println(getAngle());
g.drawImage(ship, x, y, this);
g.drawLine(x + 12, y + 10, mx, my);
repaint();
}

public int getAngle() {
a = mx - (x + 12);
b = (y - 10) - my;
return degree = (int) Math.toDegrees(Math.atan2(b, a));
}

@Override
public void keyTyped(KeyEvent e) {

}

@Override
public void keyPressed(KeyEvent e) {

}

@Override
public void keyReleased(KeyEvent e) {

}

@Override
public void mouseDragged(MouseEvent e) {

}

@Override
public void mouseMoved(MouseEvent e) {
mx = e.getX();
my = e.getY();
}

@Override
public void mouseClicked(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}
}

最佳答案

您可以使用 Java2D .它允许旋转图像并对图像做很多其他很酷的操作。它还具有硬件加速支持(通过 DirectX 或 OpenGL)。

Java2D 内置于 JRE 中。

关于java - 旋转图像滋扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12330624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com