Графические возможности Паскаль

Для использования графических возможностей ПаскальАВС служит модуль GraphABC. Чтобы его использовать, нужно его подключить следующим образом:

program xxx;

uses graphabc;

Обычно мы будем подключать его вместе с модулем crt, т. е. таким образом:

program xxx;

uses graphabc, crt;

При использовании этого модуля у нас есть окно, в котором можно рисовать, стоить графики и пр.

650

 

0

 
Будем использовать стандартное окно размером 400 пикселей (точек) в высоту и 650 пикселей в ширину. Причем начало координат окна находится в левом верхнем углу и координаты растут так: ось Х – вправо, ось Y – вниз.

Основные действия:

1) 

X

 

0

 
MoveTo(x, y); - передвигает невидимое перо к точке с координатами (x, y); Т. е. с этой точки с координатами x, y начнется рисование.

 

2)  LineTo(x, y);

Рисует отрезок от текущего положения пера до точки (x, y);

Например программа рисует отрезок из точки 100,100 в точку 200,200

cкопируйте и проверьте

program xxx;

uses graphabc, crt;

begin

moveto(100,100); {перешли в точку 100,100}

lineto(200,200); {нарисовали отрезок от этой точки до точки 200,200}

end.

 

3)  Circle(x,y,r);

Рисует окружность с центром в точке (x, y) и радиусом r

Например: нарисуем окружность радиусом 50 пикселей с центром в точке (300,300)

cкопируйте и проверьте

program xxx;

uses graphabc, crt;

begin

circle(300,300,50);

end.

НЕ нашли? Не то? Что вы ищете?

4)  Rectangle(x1,y1,x2,y2);

Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).

Например: эта программа нарисует прямоугольник с координатами левой верхней вершины 100,100 и координатами правой нижней вершины (300,300)

cкопируйте и проверьте

program xxx;

uses graphabc, crt;

begin

rectangle(100,100,300,300);

end.

100

 

300

 

300

 

100

 

0

 

5)  TextOut(x, y, s);

Выводит строку s в позицию (x, y) (точка (x, y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).

Например: Эта программа напишет текст «Это мой дом», причем начинаться он будет с координаты 100,100

cкопируйте и проверьте

program xxx;

uses graphabc, crt;

begin

TextOut(100,100, ‘Это мой дом’);

end.

Это мой дом

 

6)  FloodFill(x, y,color);

Заливает область одного цвета цветом color, начиная с точки (x, y).

Рассмотрим, как задавать цвета. Любой цвет на мониторе складывается из трех основных цветов: красного (Red), зеленого (Green) и синего (Blue), т. е. используется так называемая модель RGB.

Цвет задается следующим образом

rgb(x,y,z)

где

х – это интенсивность красного цвета (она может быть от 0 до 255. Если 0, то красного цвета нет (погашен), если 255 – то красный цвет горит по максимуму, если например 100, то средняя яркость)

y – это интенсивность зеленого цвета

z – это интенсивность синего цвета

Таким образом rgb(255,0,0) даст нам красный цвет, rgb(0,255,0) зеленый, rgb(0,0,255) синий, rgb(0,0,0) черный, rgb(255,255,255) белый

Например: чтобы закрасить окружность красным цветом, надо выбрать точку, лежащую внутри окружности и использовать FloodFill

cкопируйте и проверьте

(эта программа рисует красный круг и зеленый прямоугольник)

program xxx;

uses graphabc, crt;

begin

circle(100,100,50);

FloodFill(100,100,rgb(255,0,0));

rectangle(200,200,300,300);

FloodFill(250,250,rgb(0,255,0));

end.

7)  Задержка выполнения программы

Чтобы на экране наблюдался эффект рисования с задержкой (по порядку рисовались бы разные фигуры, а не сразу все), для этого можно использовать оператор

delay(x) – он делает паузу в выполнении программы на x миллисекунд. Этот оператор входит в модуль crt, поэтому он должен быть подключен.

Например:

delay(500) – делает задержку на 500 миллисекунд (полсекунды)

cкопируйте и проверьте

program xxx;

uses graphabc, crt;

begin

moveto(100,100);

delay(400);

lineto(100,300);

delay(400);

lineto(300,300);

delay(400);

lineto(300,100);

delay(400);

lineto(100,100);

delay(400);

floodfill(200,200,rgb(100,255,0));

end.

Еще пример:

В цикле рисуются окружности произвольного цвета, радиуса и положения, своеобразная заставка для компьютера

cкопируйте и проверьте

program xxx;

uses graphabc, crt;

var

i, x,y:integer;

begin

for i:=1 to 500 do

begin

x:= random(600);

y:= random(400) ;

circle(x, y,random(40));

floodfill(x, y,rgb(random(155)+100,random(155)+100,random(155)+100));

delay(100);

end;

end.

Задание для самостоятельного выполнения

Нарисовать домик, солнце и подписать «Мой дом» (использовать delay)

МОЙ ДОМ