Использование библиотеки JFreeChart для рисования оси на awt.Image - PullRequest
1 голос
/ 22 сентября 2011

У меня есть класс, который должен быть в состоянии взять изображение и добавить набор осей. Мне не хочется писать код самому, а лениться и использовать библиотеку JFreeChart.

Вот то, что я имею до сих пор, что, насколько я могу сказать, ничего не делает:

public void addAxis(Image sourceImage, double min, double max)
   {
      NumberAxis numAxis = new NumberAxis();
      numAxis.setRange(min, max);

      int width = sourceImage.getWidth(null);
      int height = sourceImage.getHeight(null);
      Rectangle2D size = new Rectangle(width, height);
      Graphics2D graphics = (Graphics2D) sourceImage.getGraphics();
      numAxis.draw(graphics, 0, size, size, RectangleEdge.LEFT, null);

      return;
   }

Image, который я передаю в него, создается как BufferedImage с использованием TYPE_INT_ARGB.

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

Редактировать: по разным причинам мне нужно нарисовать ось на изображении, я не могу нарисовать изображение на графике или сделать что-нибудь, что изменило бы его размер.

1 Ответ

1 голос
/ 14 октября 2011

Разобрался, публикуя для всех, кто хочет сделать то же самое.

Линия

numAxis.draw(graphics, 0, size, size, RectangleEdge.LEFT, null);

должна быть

numAxis.draw(graphics, 20, size, size, RectangleEdge.LEFT, null);

В противном случае осьотрисовал изображение.Я не понял этого (и я пинаю себя за это), потому что ось получала последний цвет, который я использовал на графическом объекте, который, как оказалось, рисовал фон.

...