我想围绕其中一个角旋转矩形,但我现在不知道如何确定角的新坐标。旋转可以在任何角落。可能存在另一种旋转方法?
有人可以帮助我吗?
我的小程序截图
import java.applet.*;
import java.awt.*;
public class MainApplet extends Applet implements Runnable {
int width, height;
int i = 0;
Thread t = null;
boolean threadSuspended;
public void init() {
width = getSize().width;
height = getSize().height;
setBackground(Color.black);
}
public void destroy() {}
public void start() {
if (t == null) {
t = new Thread(this);
threadSuspended = false;
t.start();
} else {
if (threadSuspended) {
threadSuspended = false;
synchronized (this) {
notify();
}
}
}
}
public void stop() {
threadSuspended = true;
}
public void run() {
try {
while (true) {
++i;
if (i == 359) {
i = 0;
}
showStatus("i is " + i);
if (threadSuspended) {
synchronized (this) {
while (threadSuspended) {
wait();
}
}
}
repaint();
t.sleep(100); // interval given in milliseconds
}
} catch (InterruptedException e) {
}
}
public void paint(Graphics g) {
g.setColor(Color.green);
g.drawRect(200,150, (int) (50*Math.cos(i)-100*Math.sin(i)+200-200*Math.cos(i)+150*Math.sin(i)),
(int) (50*Math.sin(i)+100*Math.cos(i)+150-200*Math.sin(i)-150*Math.cos(i)));
}
}
你可以
使用Graphics2D
的.rotate(theta, double x, double y)
方法。
public void paint(Graphics g){
//Create Graphics2D object:
Graphics2D g2d = (Graphics2D) g.create();
//Create rectangle of origin (0,0), w=30, h=50
Rectangle rectangle = new Rectangle();
rectangle.setBounds(0,0,30,50);
//Rotate rectangle by 1 radian(Math.PI) from the bottom corner
g2d.rotate(Math.PI, rectangle.x + rectangle.width/2, rectangle.y + rectangle.height/2);
//Draw rectangle
g2d.draw(rectangle);
}