Содержит рисунок в области панели - PullRequest
0 голосов
/ 22 апреля 2009

Я хочу нарисовать массив целых чисел X и Y на панели в кадре Java.

Как лучше всего нарисовать линию (в настоящее время я использую DrawPolyline от Graphic)?

Как я могу эффективно масштабировать целые значения, чтобы они все помещались в области панели, не зная значения 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 Ответ

2 голосов
/ 26 апреля 2009

Не зная максимальных значений x и y, я не думаю, что это можно сделать, так как тогда вы не можете рассчитать необходимый масштаб. Но если у вас есть массив точек, то вы, безусловно, можете найти его, чтобы найти минимальное и максимальное значения x и y.

Если у вас есть способ получить максимальные значения, читайте дальше (и для пользы других с аналогичной проблемой).

Найти максимальную разницу между любыми двумя значениями x между любыми двумя значениями y; назовите их max (dx) и max (dy) - это max (x) -min (x) и max (y) -min (y) соответственно.

Возьмите большее из ширины / max (dx) и высоты / max (dy). Это число обеспечивает вашу шкалу; просто измените каждое значение x с помощью ((x-min (x)) / scale) и каждое значение y с помощью ((y-min (y)) / scale)

Теперь у вас должна быть самая большая фигура, которая будет соответствовать ориентированной относительно 0,0.

Примечание: у меня есть отрицательные координаты, вам придется настроить их в положительном диапазоне координат перед применением этих формул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...