【问题标题】:Drawing an object with rotation without rotating the entire screen在不旋转整个屏幕的情况下绘制带有旋转的对象
【发布时间】:2012-11-24 04:59:08
【问题描述】:

我正在尝试旋转玩家以跟随鼠标。为此,我使用转换为 Graphics2D 对象的 Graphics obj 并使用 rotate 方法。这是我的小组抽签:

public void paint(Graphics g){
    g.setColor(Color.white);
    g.clearRect(0, 0, this.getWidth(), this.getHeight());
    player.draw(g);
    enemy.draw(g);
    mouseSelection.draw(g);
    wallBoard.draw(g);
    //draw the existing walls
    for(Wall w : walls)
        w.draw(g); 

    //draw the potential wall
    potentialWall.draw(g);

    //draw the lineWalls
    for(Wall w : lineWalls)
        w.draw(g);
}

我所有的轮换内容都发生在 player.draw(g) 中,但我认为拥有更多信息总比拥有更少信息要好。这是我的 player.draw(g)

    public void draw(Graphics g){
    //draw the player as a circle for now
    g.setColor(Color.black);
    Graphics2D g2d = (Graphics2D)g;
    g2d.drawOval(getX(), getY(), 20, 20);
    sword.draw(g2d);
    g2d.rotate(rotation);
    g2d.rotate(0);
}

我尝试了许多 g2d.rotate 和绘制形状的组合。关于我如何旋转玩家和剑而不是整个世界本身的任何建议?

【问题讨论】:

  • 你可以看看this,它会根据鼠标光标的位置旋转图像
  • 嗯,这就是我已经在做的事情。我遇到的问题是图形绘制的所有内容都被旋转了,而不仅仅是我想要旋转的一个圆圈和一个矩形。
  • 旋转一个圆圈并不能取得太大的成就;)但是,您可以使用Shape API,它允许您“转换”形状。看看this,你必须滚动到源代码的底部,但我创建了一个三角形并在它自己的上下文中旋转它
  • 我目前已经编写了该代码,但由于某种原因它没有围绕正确的轴旋转。
  • 酷我成功了,非常感谢!!! :D:D:D

标签: java


【解决方案1】:

我会尝试将您的播放器绘制到自己的图像(带有自己的图形对象),旋转该图像,然后在您的主图形上绘制该图像。

您会遇到一些潜在的令人讨厌的障碍,例如临时图像的透明度,但它们不是靠一点点血汗和泪水解决不了的。

【讨论】:

  • 如何旋转这样的图像?
  • 使用您用来旋转主图像的任何方法。我会尝试tempImage.createGraphics().rotate(rotation);,但既然我已经尝试过了,那就加点盐吧。
  • 嗯我真的很想知道如何使用原语来做到这一点。不过谢谢
  • @Brandon 原语是什么意思?
  • 如 g.drawOval()、drawRect() 等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
相关资源
最近更新 更多