【问题标题】:Trying to draw a cylinder in Java using lines and ovals尝试使用线条和椭圆在 Java 中绘制圆柱体
【发布时间】:2021-01-24 03:10:35
【问题描述】:

我正在尝试使用 java 图形和用户输入的半径和高度来绘制圆柱体。我正在让自己发疯,试图让我的 x 和 y 点对齐。我知道这是不对的,但这里是我的线条和椭圆形,可以让你明白我的意思......我是新手,所以不要对我太苛刻!

         g.drawOval(50,  50, radius, height);
         g.drawLine(50, 94, 50, 287 + height);
         g.drawLine(50 + radius, 94, 50 + radius, 287 + height);
         g.drawOval(50, 331, radius, height);

【问题讨论】:

  • 你说的getting x and y points to line up right是什么意思,比如哪个点?你能清楚地解释你的预期输出和你得到了什么吗?
  • 我正在做的是让用户输入两个垂直排列的椭圆的半径和高度,绘制两条垂直线,一条在两个椭圆的两侧,以创建一个圆柱体的图形。使用我上面给出的代码行,如果我输入 200 作为半径,100 作为高度,它会绘制一个完美的圆柱体。但是,如果我为半径输入 100,为高度输入 50,我的 2 条垂直线不够长,无法到达椭圆的两侧。抱歉,这有点难以解释。

标签: java swing user-interface graphics jpanel


【解决方案1】:

我设法重构了你的代码以获得你想要的,这就是它的样子。

    g.drawOval(50,  94, width, height);
    g.drawOval(50, 287, width, height);

    g.drawLine(50, 94+height/2, 50, 287+height/2);
    g.drawLine(50+width, 94+height/2, 50 + width, 287 + height/2);

我将使用更模块化和更灵活的解决方案来编辑​​我的问题,但现在我希望这对您有所帮助。

回想一下,您为 drawOval 函数提供的坐标不是椭圆形中心的坐标。这些坐标指向封装椭圆形的rectangle 的左上角。考虑到这一点并进行计算,这就是我想出的。

【讨论】:

  • 谢谢,我知道我将不得不将高度分成两半,但由于某种原因我没有做对,所以我最终重新开始,这比我做的要简单!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多