【问题标题】:draw ellipse2d around mouse click java [closed]围绕鼠标单击java绘制ellipse2d [关闭]
【发布时间】:2013-05-09 06:48:37
【问题描述】:

我正在制作一个在用户单击屏幕时绘制椭圆的程序。当前绘制椭圆时,原点为 (0,0),因此它是从右上角绘制的。我希望它围绕鼠标单击进行绘制,因此中心正是用户单击的位置,但我不知道该怎么做。如果有人能引导我朝着正确的方向前进,那就太好了!

    public void DrawSprite( Graphics2D g2 )
    {
        AffineTransform tOldTransform = g2.getTransform();
        g2.setColor(SetSpriteColor());
        g2.translate(mX, mY);
        g2.rotate(mRotation*(Math.PI/180));
        g2.draw(new Ellipse2D.Double(0, 0, mWidth, mHeight));
        g2.setTransform(tOldTransform);
    }

【问题讨论】:

  • 我已经尝试过我认为可行的方法,但是当我点击屏幕时,椭圆被画得离我点击的地方很远
  • 请参阅java tag wiki 中的 Java 命名约定。
  • 我打赌你的 mX 和 mY 是不正确的,它们要么没有被设置,要么它们是绝对值,而它们确实应该相对于你正在绘制的窗格
  • 我刚刚检查过,它们肯定被设置并且值是正确的(我在 draw 方法中使用了 system.out.println(mX))

标签: java awt draw java-2d affinetransform


【解决方案1】:

g2.translate(mX, mY);

我猜 mX 和 mY 是鼠标点击的点。所以你的翻译不可能是那个确切的点。可能是这样的:

g2.translate(mX - (mWidth / 2), mY - (mHeight / 2));

【讨论】:

  • 很有魅力,非常感谢
  • 嗨。该作业的老师在这里。也许你在课堂上玩 LoL,而我在棋盘上玩,但无论如何你都可以问我。
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 2020-08-08
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多