我正在尝试绘制一条线,无论用户如何调整JFrame的大小,都按比例保持线条相同。然而,我遇到的问题是当我尝试在用户使JFrame小于默认值时绘制一条线,因为我最终将坐标乘以小于1的分数,并且因为g2.drawLine()需要整数,所以将它们视为0并且不会绘制任何内容。我想知道是否有解决这个小问题的方法,或者你们有什么建议我应该如何改变我的逻辑。
答案 0 :(得分:0)
我认为你所看到的只是因为整数除法。见Why is the result of 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 :(得分:0)
将坐标乘以1以下的分数,然后 g2.drawLine()需要整数,它们将它们视为0'
这显然是假的!如果坐标是327,那么将它乘以0.7得到228.9。这不是一个整数但是有整数部分,所以你可以安全地将它转换为整数:
double factor = ...;
int newCoord, oldCoord = ...;
newCoord = (int)(oldCoord * factor)
会给你圆润的结果。
或其他错误......