Назад | Начало урока | Вперед
Содержание

Глава 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 {

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);
...
// 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);

}
}


Результат работы программы:

Подсказка


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz