Java

       

Практически все интересуются сейчас курсами


Практически все интересуются сейчас курсами акций на бирже. Нарисуем (всем на радость) на нашей диаграмме курс акций компании Sun за одну из недель марта.

Для создания изображений в формате JPEG используется класс com.sun.image.codec.jpeg.JPEGImageEncoder. Повторюсь, что принадлежность к пакету com.sun означает, что этот класс не является частью основного API и к нему относятся все соответствующие предупреждения.

Класс JPEGImageEncoder "понимает", как перекодировать изображение java.awt.image.BufferedImage, так что его и будем использовать. Для создания класса BufferedImage нужно указать требуемые размеры изображения. После создания, класс BufferedImage предоставляет класс ava.awt.Graphics2D, который можно использовать для рисования на соответствующей классу BufferedImage картинке. Все просто? Итак, основные шаги, необходимые для формирования изображения в формате JPEG:


  1. Создаем класс JPEGImageEncoder, предоставляя ему поток OutputStream данных передаваемых клиенту.
  2. Создаем класс BufferedImage необходимых размеров.
  3. Используем реализацию класса Graphics2D, предоставляемую классом BufferedImage, для рисования диаграммы.
  4. С помощью полученного ранее класса JPEGImageEncoder перекодируем нарисованное изображение в формат JPEG и пишем его в поток, отправляемый клиенту.


Обсудим некоторые детали рисования с использованием Graphics2D.

Для создания графика курса акций нужно, собственно, нарисовать несколько линий. Пакет Java 2D, java.awt.geom, содержит все необходимые для этого классы. Абстрактный класс Line2D определяет отрезок прямой. Он имеет две реализации, отличающиеся типом используемых координат. Класс Line2D.Double применяет примитивный тип double, а класс Line2D.Float - вещественные числа с плавающей точкой. Высокая точность совершенно излишня для нашего графика, но я не буду экономить и создам отрезки прямой классом Line2D.Double.

Приведем, в качестве примера, участок программы, рисующий горизонтальную ось графика:

horAxis = new Line2D.Double(HorzInset, ImageHeight - VertInset, ImageWidth - HorzInset, ImageHeight - VertInset); graphics.draw(horAxis);

Горизонтальная ось строится с небольшим отступом от границы экрана, предоставляя место для разметки. После создания вы рисуете линю, обращаясь к методу draw() объекта Graphics2D. Напомню, что вы получили его от реализации класса BufferedImage. Класс Graphics2D содержит методы для рисования графических примитивов, для наших целей более чем достаточно. На рисунке 2 приведен окончательный вариант графика.



Рис. 2. Окончательный вариант графика курса акций.


Содержание раздела