Загрузка данных
Этапы разработки программы:
1. Создать проект с именем ProjectFive. Импортировать пакеты java.awt, java.awt.geom, java.awt.image и JFrame.
2. Создать класс Shape, как расширение класса JFrame пакета java.awt.
3. Создать конструктор класса Shape (), в котором создается окно JFrame, па- кета javax.swing и выступающее основой для отрисовки заданных графических объ- ектов.
4. В теле конструктора определить следующие инструкции:
1) обращение к конструктору базового класса super(s) (JFrame) для определения параметра s в качестве строки заголовка создаваемого окна. Уточним, что значение параметра s задается при создании ОБЪЕКТА (или экземпляра) класса Shape в глав- ном методе созданного – main(String[] args);
2) отключение менеджера расположения создаваемых в окне объектов, setLayout(null);
3) установление размера создаваемого окна 425х160 – метод setSize класса Graphics;
4) вывод окна на экран – метод setVisible(true); Уточним, что, так как наш класс является расширением класса JFrame, создаваемое окно будет содержать строку заголовка, инструменты для свертывания, закрытия, изменения размеров окна;
5) процедура обработки события завершения программы при закрытии окна, this.setDefaultCloseOperation(EXIT_ON_CLOSE). Конструкция this перед методом указывает на его принадлежность к базовому классу – классу JFrame;
5. Создать метод, который реализует условие задачи – public void paint (Graphics g). В качестве аргумента метода указан графический контекст g (объект класса Graphics, который содержит все необходимое для рисования.
6. Осуществить вызов метода для правильной отрисовки дочерних легких ком- понентов пакета swing – super.paint(g).
7. Выполнить приведение типа Graphics графического контекста g к типу Graphics2D и присвоить его переменой ссылочного типа g2d для получения доступа к возможностям Java2D – Graphics2D g2d = (Graphics2D) g.
Рисуем овал с градиентной заливкой:
8. Вызвать метод setPaint (класс Graphics2D) для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса GradientPaint. Конструктор данного объекта определяет тип градиентной заливки.
9. Выполнить заливку овала градиентом: g2d.fill(new Ellipse2D.Double(5, 30, 65, 100) );
Рисуем прямоугольник с красным контуром:
10. Вызвать метод setPaint для присвоения значения Color.red объекту Paint: g2d.setPaint(Color.red);
11. Вызвать метод setStroke (класса Graphics2D) для графического объекта g2d, указав в качестве аргумента объект (экземпляра) класса BasicStroke. Конструктор данного объекта определяет толщину линии в 10 пикселов (10.0f).
12. Нарисовать контур прямоугольника, вызвав метод draw для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса Rectangle2D.Double. Конструктор данного объекта определяет координаты прямо- угольника (80, 30, 65, 100).
Рисуем прямоугольник со сглаженными углами, заполненный шаблоном
13. Создать буфер buffImage – объект класса Bufferedlmage из пакета java.awt.image размером 10х10 пикселей и цветовую схему RGB: BufferedImage buffImage = new BufferedImage(10,10, BufferedImage.TYPE_INT_RGB);
14. Создать объект gg типа Graphics2D, который можно использовать для зане- сения графики в buffImage – Graphics2D gg = buffImage.createGraphics();
15. Заполнить графический объект буфера фигурой, которая будет служить об- разцом текстуры:
gg.setColor( Color.yellow ); gg.fillRect( 0, 0, 10, 10 ); gg.setColor( Color.blue ); gg.fillRect( 1,1,3,3); gg.setColor( Color.red) ; gg.fillRect( 4,4,3,3) ;
16. Вызвать метод setPaint (класса Graphics2D) для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса TexturePaint. Первый параметр конструктора данного объекта определяет изображение, хранящееся в объекте buffImage, в качестве текстуры закрашиваемой фигуры. Второй параметр задает пря- моугольную область 10х10 для объекта buffImage (экземпляр класса Rectangle), кото- рая будет многократно использована для формирования текстуры – g2d.setPaint(new TexturePaint(buffImage, new Rectangle(10,10)) );
17. Выполнить заливку прямоугольника со сглаженными углами полученной текстурой, указав следующие координаты (155,30,75, 100,50,50) (см. п.9);
Рисуем белый сектор
18. Вызвать метод setPaint для присвоения значения Color.White объекту Paint (см. п. 10).
19. Вызвать метод setStroke (класса Graphics2D) для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса BasicStroke. Конструктор дан- ного объекта определяет толщину линии в 6 пикселов (6.0f).
20. Нарисовать контур сектора, вызвав метод draw для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса Arc2D.Double. Конструк- тор данного объекта определяется координатами дуги (240, 30, 75, 100, 0, 270, Arc2D.PIE).
Рисуем зеленую линию
21. Вызвать метод setPaint для присвоения значения Color.Green объекту Paint (см. п. 10).
22. Нарисовать линию, вызвав метод draw для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса Line2D.Double. Конструктор данного объекта определяет координаты линии (395, 30, 320, 150).
23. Определить двухэлементный массив float dashes[]={10}; Этот массив опи- сывает длину штрихов и расстояний между штрихами в пикселах.
Рисуем желтую линию
24. Вызвать метод setPaint для присвоения значения Color.yellow объекту Paint (см. п. 10).
25. Вызвать метод setStroke (класса Graphics2D) для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса BasicStroke. Конструктор объ- екта:
g2d.setStroke(new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, dashes,0));
28. Нарисовать линию, вызвав метод draw для графического объекта g2d, указав в качестве аргумента объект (экземпляр) класса Line2D.Double. Конструктор данного объекта определяет координаты линии (320, 30, 395, 150).
29. Создать метод public static void main(String[] args), формирующий объект класса Shape (), указав в качестве аргумента метода Название окна «Изображение двухмерных фигур».