java string转rect_Java GUI的旋转和Rectangle的翻译

我试图在JPanel中绘制一个矩形,它将翻译然后旋转自己以模仿汽车的运动.我已经能够使矩形平移和旋转,但它围绕(0,0)的原点旋转.我非常高兴能够让矩形移动和旋转,因为我是Java GUI的新手,但我似乎无法得到如何使矩形围绕自身旋转,因为我尝试了更多它,当我初始化矩形并将其旋转45度,它的位置发生了变化,我假设是旋转方法附加的变换矩阵.

我通过网站查看了如何解决这个问题,但是我只找到了如何旋转矩形而不是如何旋转和移动模拟汽车的运动.我认为它关注它的变换矩阵,但我只是在猜测.所以我的问题是如何让矩形能够旋转并在自身周围移动而不是JPanel中的一个点.

这是我到目前为止提出的代码:

public class Draw extends JPanel implements ActionListener {

private int x = 100;

private int y = 100;

private double theta = Math.PI;

Rectangle rec = new Rectangle(x,y,25,25);

Timer timer = new Timer(25,this);

Draw(){

setBackground(Color.black);

timer.start();

}

public void paintComponent(Graphics g){

super.paintComponent(g);

Graphics2D g2d = (Graphics2D)g;

g2d.setColor(Color.white);

rec.x = 100;

rec.y = 100;

g2d.rotate(theta);

g2d.draw(rec);

g2d.fill(rec);

}

public void actionPerformed(ActionEvent e) {

x = (int) (x + (Math.cos(theta))*1);

y = (int) (y + (Math.sin(theta))*1);

theta = theta - (5*Math.PI/180);

repaint();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值