绕过g2.drawLine()方法的整数要求的方法



我目前正在尝试绘制一条线,无论用户如何调整 JFrame 的大小,这条线都按比例保持不变。但是,我遇到的问题是,当用户使 JFrame 小于默认值时,我尝试绘制一条线,因为我最终将坐标乘以 1 以下的分数,并且由于 g2.drawLine() 需要整数,它将它们作为 0 并且没有绘制任何内容。我想知道这个小故障是否有解决方法,或者你们对我应该如何改变我的逻辑有任何建议。

我认为你所看到的只是因为整数除法。请参阅为什么1/3 == 0的结果?当你有(width / 624)时,如果width小于 624,则其结果始终为 0。

您可以:

  • 使用(width / 624.0),它在浮点运算中执行除法(如double),或
  • 您可以将括号重新排列为例如(int) ((x * width) / 624))而不是(int) (x * (width / 624)).

但是,要直接回答问题,您可以使用浮点坐标绘制一条线java.awt.geom.Line2D

Line2D line2D = new Line2D.Double(x1, y1, x2, y2);
graphics2D.draw(line2D);

(另请参阅 https://docs.oracle.com/javase/tutorial/2d/geometry/primitives.html。

坐标乘以小于 1 的分数,并且自 g2.drawLine() 需要整数,它将它们作为 0

这显然是错误的!如果一个坐标是327,那么乘以0.7得到228.9。这不是整数,而是整数部分,因此您可以安全地将其转换为整数:

double factor = ...;
int newCoord, oldCoord = ...;
newCoord = (int)(oldCoord * factor)

会给你四舍五入的结果。

还是别的不对劲...

相关内容

  • 没有找到相关文章