在java中旋转弧

时间:2013-11-20 19:53:45

标签: java rotation automatic-ref-counting

大家好,我有一个像这样的弧

g2d.draw(new Arc2D.Double(200, 200,100,200,90.123, 135.3456,Arc2D.OPEN));

现在我需要使用java.awt.geom包的AffineTransform类来旋转这个弧,所以不得不放

public  void AffineTransform(AffineTransform Tx){
 AffineTransform rtt = new AffineTransform();
      rtt.rotate(Math.toRadians(62));

 }

所以我创建了一个对象,我告诉这个对象旋转62度,我希望它们是弧度,所以我转换。接下来我该怎么做才能使我的弧旋转这些弧度。我真的是一个新手,所以广泛的解释将是首选....

1 个答案:

答案 0 :(得分:1)

相反,Graphics2D类本身具有旋转功能,(更简单,更短):

  1. rotate(double theta):使用旋转变换连接当前Graphics2D变换。后续渲染将相对于前一个原点旋转指定的弧度。

  2. rotate(double theta, double x, double y):将当前的Graphics2D Transform与转换后的旋转变换连接起来。此操作等同于以下调用序列:

    translate(x, y);
    rotate(theta);
    translate(-x, -y);
    
  3. 然而,旋转之后,我想恢复图形状态:尝试创建图形对象并在绘制完成后将其处理掉:

       Graphics2D g2d = (Graphics2D)g.create();
       g2d.rotate(theta);
       g2d.draw(new Arc2D.Double(200, 200,100,200,90.123, 135.3456,Arc2D.OPEN));
       g2d.dispose();
    

    或者如果不喜欢创建和处置:

       g2d.rotate(theta);
       g2d.draw(new Arc2D.Double(200, 200,100,200,90.123, 135.3456,Arc2D.OPEN));
       g2d.rotate(-theta);