如何在小程序上围绕角落旋转矩形



我想围绕其中一个角旋转矩形,但我现在不知道如何确定角的新坐标。旋转可以在任何角落。可能存在另一种旋转方法?

有人可以帮助我吗?

我的小程序截图

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);
}

相关内容

  • 没有找到相关文章

最新更新