Java旋转问题

Java旋转问题

问题描述:

当我尝试将旋转应用于当前的g2d对象时,它不旋转它,它将它呈现在相同的地方(在我的上下文中)。根据我对旋转方法的理解,它将变换应用到当前的图形上下文中,转换任何渲染后的像素(这可能是我出错的地方)。这里是有问题的代码:Java旋转问题

@Override 
    public void paint(final Graphics graphics) { 
    super.paint(graphics); 
    final Graphics2D g2d = (Graphics2D) graphics; 
    .... 
    .... 
    g2d.setColor(Color.RED); 
    g2d.setStroke(new BasicStroke(SMALL_LINE_THICKNESS)); 
    if (isLattice1Drawn) { 
     g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1)); 
     // lattice1 and lattice2 are Polygon objects 
     g2d.draw(lattice1); 
     // This fades in the second Polygon over the first 
     g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha)); 
     // This line should rotate it, but doesn't 
     g2d.rotate(Math.toRadians(210)); 
     g2d.draw(lattice2); 
     ..... 

谢谢,迈克

编辑1 作为杰夫的建议,我试过只具有旋转和油漆绘画,让我用下面的代码:

@Override 
public void paint(final Graphics graphics) { 
    super.paint(graphics); 
    final Graphics2D g2d = (Graphics2D) graphics; 
    g2d.rotate(Math.toRadians(210)); 
    g2d.draw(lattice2); 
    return; 
    // Rest of paint ................. 

不幸的是,这并没有帮助,任何其他建议将是最受欢迎的。

编辑2: 当我不调用旋转时,多边形被渲染,但是当我什么都不做时会发生。任何人都可以解释吗?

+0

我相信你是对旋转后转化像素正确。什么是格子?那是你创造的东西吗? – jeff 2012-07-18 16:16:50

+0

@jeff lattice1和lattice2是java.awt.Polygon的实例,没有什么特别的:) – mikeythemissile 2012-07-18 16:19:11

+0

我很茫然 - 如果你把lattice2放到一个paint方法本身只有旋转会怎样? – jeff 2012-07-18 17:02:22

我从得知的编辑2是:旋转实际上起作用。但是,由于旋转在原点附近,因此多边形的旋转坐标会在可见区域外结束。你可以通过旋转较小的度数来测试它。

然后,如果所需的操作是绕其质心的多边形,请使用以下的Graphics2D方法代替:

void rotate(double theta, double x, double y) 
+0

我认为这就是发生这种情况。你可以像我之前评论中所说的那样翻译出处,但我认为vizier所说的旋转版更好。我忘了它:S – davidbuzatto 2012-07-18 17:27:44

+0

这就是发生了什么,不能相信我没有那样的:S 非常感谢大家的帮助:D – mikeythemissile 2012-07-18 17:42:16