Java旋转问题

时间:2012-07-18 15:46:50

标签: java rotation graphics2d

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

@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: 当我不调用旋转时,渲染多边形,但是当我什么都不做的时候。谁能解释一下呢?

1 个答案:

答案 0 :(得分:3)

我从编辑2 中理解的是:旋转确实有效。但是,由于旋转在原点附近,因此多边形的旋转坐标最终位于可见区域之外。您可以通过旋转较小的度数来测试它。

然后,如果所需操作是围绕质心旋转多边形,请改用以下Graphics2D方法:

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