Глава 2
Задача 2.2 Олимпийские кольца.
Необходимо вывести на экран цветное изображение олимпийского логотипа в виде пяти пересекающихся колец. Используйте класс Ring, который позволяет задать цвет и позицию кольца в качестве параметров конструктора, а затем напишите другой класс, создающзий пять объектов Ring, чтобы завершить логотип. Используйте программу FlagMaker в качестве модели (Кольца должны быть синего, желтого, черного, зеленого и красного цветов, причем желтое и зеленое находятся внизу).
Решение
Чтобы на рисунке образовалось кольцо, надо нарисовать две концентрические окружности. Меньшую окружность вписать внутрь большей. Внутреннюю окружность окрасить в цвет фона. Внешнюю окружность по выбору любым цветом. Для рисования окружности воспользуемся функцией drawOval() класса Graphics
// blue
g.setColor (Color.blue);
g.drawOval(int x,int y,int width, int hight);
При этом параметры обозначают следующее
x - координата x прямоугольника
y - координата y прямоугольника
width - ширина прямоугольника
hight - высота прямоугольника
Внутрь этого прямоугольника и вписывается овал (в нашем случае, если width == hight, круг)
За основу возьмем программу рисования флага, немного видоизменив ее. Создадим класс Ring в котором будет происходить рисование колец. При помощи функций setColor(), drawOval(), fillOval() нарисуем все пять колец.
class Ring extends Canvas {
// blue
g.setColor (Color.blue);
g.drawOval(20,20,80,80);
g.fillOval (20,20,80,80);
g.setColor (Color.white);
g.drawOval(30,30,60,60);
g.fillOval (30,30,60,60);
...
// Label the drawing
g.setColor (Color.red);
g.drawString("Rings of Olimpic",100,180);
Основная программа, которая создает объект данного класса Ring и размещает его в центре окна осталась без изменений от прежней программы.
Код программы RingMaker1
import java.awt.*;
import java.awt.event.*;
class RingsMaker1 extends Frame {
/* Flag drawing program
* --------------------
* Illustrates colour and simple graphic output
*/
RingsMaker1 () {
add ("Center", new Ring());
// Enable the program to end when the window is closed
addWindowListener(new WindowAdapter () {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// Set the frame's title and size and activate the drawing
// described by the paint method.
setTitle ("A Rings of Olimpic");
setSize (300, 250);
setVisible (true);
}
public static void main (String [ ] args) {
new RingsMaker1 ();
}
}
class Ring extends Canvas {
public void paint (Graphics g) {
// Draw the flag using coloured rectangles
// blue
g.setColor (Color.blue);
g.drawOval(20,20,80,80);
g.fillOval (20,20,80,80);
g.setColor (Color.white);
g.drawOval(30,30,60,60);
g.fillOval (30,30,60,60);
// red
g.setColor (Color.red);
g.drawOval(80,20,80,80);
g.fillOval (80,20,80,80);
g.setColor (Color.white);
g.drawOval(90,30,60,60);
g.fillOval (90,30,60,60);
// black
g.setColor (Color.black);
g.drawOval(140,20,80,80);
g.fillOval (140,20,80,80);
g.setColor (Color.white);
g.drawOval(150,30,60,60);
g.fillOval (150,30,60,60);
// yellow
g.setColor (Color.yellow);
g.drawOval(55,80,80,80);
g.fillOval (55,80,80,80);
g.setColor (Color.white);
g.drawOval(65,90,60,60);
g.fillOval (65,90,60,60);
// green
g.setColor (Color.green);
g.drawOval(115,80,80,80);
g.fillOval (115,80,80,80);
g.setColor (Color.white);
g.drawOval(125,90,60,60);
g.fillOval (125,90,60,60);
// Label the drawing
g.setColor (Color.red);
g.drawString("Rings of Olimpic",100,180);
}
}
Результат работы программы:
Назад |
Начало урока |
Вверх |
Вперед
Содержание