将图纸包含在面板区域中

时间:2009-04-21 23:14:41

标签: java swing

我想将一个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();
}

1 个答案:

答案 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。

注意:我有负坐标,在应用这些公式之前,你必须将它们调整到正坐标范围。