我想将一个X和Y整数数组绘制到Java框架中的面板上。
绘制线条的最佳方法是什么(目前我正在使用Graphic的drawPolyline)?
如何有效地缩放整数值,使它们都适合面板区域而不知道max(Y)值?
更新,例如
public void paint(Graphics g)
{
int height = panel.getHeight();
int width = panel.getWidth();
int[] xPoints = { ... values ... };
int[] yPoints = { ... values ... };
int nPoints = dataLength;
// Scale xPoints and yPoints so they fit in the area of width and height
// and draw line
g.drawPolyline(xPoints, yPoints, nPoints);
g.dispose();
}
答案 0 :(得分:2)
在不知道x和y最大值的情况下,我认为不能这样做,因为你无法计算所需的比例。但是如果你有一个点数组,那么你当然可以搜索它来找到最小和最大的x和y值。
如果您有获取最大值的方法,请继续阅读(并为其他有类似问题的人的利益)。
找出任意两个y值之间任意两个x值之间的最大差异;称它们为max(dx)和max(dy) - 它们分别是max(x)-min(x)和max(y)-min(y)。
取宽度/最大值(dx)和高度/最大值(dy)。这个数字提供了你的规模;只需使用((x-min(x))/ scale)修改每个x值,并使用((y-min(y))/ scale)修改每个y值
现在你应该拥有最大的形状,适合相对于0,0。
注意:我有负坐标,在应用这些公式之前,你必须将它们调整到正坐标范围。