Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Создание сложного изображения из повторяющегося простого



 

Создадим изображение из множества логотипов Мерседеса:

 

 

Рис. 2.30. Множество логотипов Мерседес

 

Для этого сначала создадим класс MyPanel3, расширяющий JPanel. Затем добавим в сгенерированный код класса MyPanel3 метод paint() с кодом рисования одного логотипа Мерседеса:

 

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JPanel;

 

public class MyPanel3 extends JPanel {

 

public void paint(Graphics g) {

     super.paint(g);

     g.setColor(Color.red);

     // координаты центра логотипа ( x = 100, y = 100)

     int x = 100;

     int y = 100;

     // окружность вокруг центра логотипа

     g . drawOval ( x - 10, y - 10, 21, 21);

    

     // рисуем три линии внутри окружности

     // линия, идущая от верхней части окружности до центра

     g.drawLine(x, y, x, y - 10);

     // линия, идущая от левой части окружности до центра

     g.drawLine(x, y, x - 9, y + 6);

     // линия, идущая от правой части окружности до центра

     g.drawLine(x, y, x + 9, y + 6);

}

}

 

Обратите внимание на то, что элементы логотипа рисуются, используя относительные координаты: y–10, x–9, y+6 и т.д. Это позволяет нам легко нарисовать изображение логотипа в любом месте экрана. Для этого достаточно изменить координаты x и y.

В классе Home изменим в методе initialize() строку создания панели с

     JPanel panel = new MyPanel2();

на

     JPanel panel = new MyPanel3();

 

После чего запустим Home на выполнение. Мы увидим такой вид запустившегося приложения:

 

 

Рис. 2.31. Рисуется один логотип

Чтобы вывести изображение в виде строки из логотипов, нам понадобится цикл. Будем использовать while. В начале зададим начальные координаты центра логотипа и будем продвигать центр вправо, рисуя логотипы один за другим:

 

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JPanel;

 

public class MyPanel3 extends JPanel {

 

public void paint(Graphics g) {

     super.paint(g);

     g.setColor(Color.red);

     // начальные координаты центра логотипа ( x = 100, y = 30)

     int y = 100;

     int x = 30;

     // будем рисовать, пока x не достигнет 400

     while (x < 400) {

           g.drawOval(x - 10, y - 10, 21, 21);

           g.drawLine(x, y, x, y - 10);

           g.drawLine(x, y, x - 9, y + 6);

           g.drawLine(x, y, x + 9, y + 6);

           // увеличиваем значение x на 30 каждую итерацию

           // т.е. следующий логотип будет

           // нарисован правее на 30 пикселей

           x = x + 30;

     }

}

}

 

Теперь запустим класс Home на выполнение. Мы увидим такой вид запустившегося приложения:

 

 

Рис. 2.32. Рисование логотипов вдоль оси x

 

Чтобы вывести несколько строк логотипов нам понадобится второй цикл. Также будем использовать while. Ранее созданный цикл теперь окажется внутри вновь созданного. В новом цикле мы будем менять переменную y, вначале задав ей минимальное значение, и с каждым шагом увеличивая ее, тем самым продвигая логотипы ниже и ниже:

 

 

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JPanel;

 

public class MyPanel3 extends JPanel {

 

public void paint(Graphics g) {

     super.paint(g);

     g.setColor(Color.red);

     // начальные координаты центра логотипа ( x = 100, y = 30)

     int y = 50;

     // будем рисовать строки логотипов пока

     // не опустимся до 450

     while ( y <= 450) {

 

           // x нужно инициализировать при КАЖДОМ

           // новом проходе тела цикла по y

           int x = 30;

 

           // будем рисовать, пока x не достигнет 400

           while (x < 400) {

                g.drawOval(x - 10, y - 10, 21, 21);

                g.drawLine(x, y, x, y - 10);

                g.drawLine(x, y, x - 9, y + 6);

                g.drawLine(x, y, x + 9, y + 6);

                // увеличиваем значение x на 30 каждую итерацию

                // т.е. следующий логотип будет

                // нарисован правее на 30 пикселей

                x = x + 30;

           }

           // увеличиваем значение y на 50 каждую итерацию

           y = y + 50;

     }

}

}

 

Теперь запустим класс Home на выполнение. Мы увидим такой вид запустившегося приложения:

 

 

Рис. 2.33. Рисование логотипов вдоль оси x и оси y

 

Это именно тот вид, который мы хотели получить.

 

Поздравляем Вас! Вы добрались до самого интересного! Все примеры разобраны, вся информация получена! Теперь Вам стоит приступить к выполнению задач, которые приведены далее. Удачи Вам в освоении программирования GUI приложений на Java!

 


 


ЗАДАНИЯ ДЛЯ ЛАБОРАТОРНЫХ РАБОТ

 


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 397; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.015 с.)
Главная | Случайная страница | Обратная связь