2011-05-22 31 views
3

嗨我正在尝试创建一个循环文本。我设法通过循环每个旋转的字符来以某种方式做到这一点。但我仍然不明白。我不明白角度。有人能给我一个很好的解释吗?就像在下面的代码中,为什么不完全是90度?但是在100到120之间呢?为什么g2d.rotate到90度不是完全90度? JAVA

Graphics2D g2d = (Graphics2D)g; 
    AffineTransform xform1, cxform; 
    xform1 = AffineTransform.getTranslateInstance(200,200); 
    g2d.setTransform(xform1); 
    g2d.drawLine(0, -20, 0, 20); 
    g2d.drawLine(-20, 0, 20, 0); 
    xform1.rotate(Math.toDegrees(90)); 
    g2d.setTransform(xform1); 
    g2d.drawString("a", 0, 20); 

我的第一篇文章。希望我没有犯任何错误。 谢谢

回答

4

你想旋转90度,但rotate需要弧度 - 所以你的转换是错误的方式。你将90个弧度度,然后把它们递过来一些东西,希望弧度:)试试这个:

xform1.rotate(Math.toRadians(90)); 
+0

哇!多么愚蠢的错误。谢谢。 – 2011-05-22 11:43:11

+0

请注意,由于弧度90°为PI/2,因此您完全不幸运以获得确切值:p – Voo 2011-05-22 13:31:54

+0

@Voo:其实,在这里背景中使用的AffineTransform类[专门处理象限旋转](http: //download.oracle.com/javase/6/docs/api/index.html?java/awt/geom/AffineTransform.html),因此使用pi/2的效果不错。 – 2011-05-22 18:07:20