【问题标题】:Containing drawing to a panel area包含绘图到面板区域
【发布时间】:2009-04-21 23:14:41
【问题描述】:

我想在 Java 框架中的面板上绘制一个 X 和 Y 整数数组。

画线最好的方法是什么(目前我使用的是Graphic的drawPolyline)?

我如何有效地缩放整数值,使它们都适合面板区域而不知道最大 (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();
}

【问题讨论】:

  • “绘制一个 X 和 Y 整数数组”是什么意思 - 您是要绘制这些整数指定的点,还是绘制连接它们的线,还是自己绘制数字?

标签: java swing


【解决方案1】:

在不知道 x 和 y 最大值的情况下,我认为无法做到这一点,因为您无法计算所需的比例。但是如果你有一个点数组,那么你当然可以搜索它以找到最小和最大 x 和 y 值。

如果您有办法获得最大值,请继续阅读(为了其他有类似问题的人的利益)。

求任意两个y值之间任意两个x值的最大差值;称它们为 max(dx) 和 max(dy) - 它们分别是 max(x)-min(x) 和 max(y)-min(y)。

取 width/max(dx) 和 height/max(dy) 中的较大者。这个数字提供了你的规模;只需使用 ((x-min(x))/scale) 修改每个 x 值,使用 ((y-min(y))/scale) 修改每个 y 值

您现在应该拥有适合相对 0,0 方向的最大形状。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多