Шаг 45.
Основные процедуры и функции, используемые в работе с графическими объектами

    Здесь мы приведем сиснтаксис основных подпрограмм, используемых при создании графических приложений.

    Перечислим основные процедуры работы с графическими объектами.

   
Таблица 1. Основные процедуры и функции
Процедура (функция)
Назначение
Line (x1,y1,x2,y2: Integer);
Построение отрезка из точки с координатами (x1,y1) до точки (x2,y2) текущим цветом.
Rectangle (x1,y1,x2,y2: Integer);
Построение прямоугольника с координатами диагонали (x1,y1) и (x2,y2). Сама диагональ не изображается.
Bar (x1,y1,x2,y2: Integer);
Построение закрашенного прямоугольника с координатами диагонали (x1,y1) и (x2,y2).
Circle (x,y: Integer,r:Word);
Построение окружности с центром в точке (x,y) и радиусом r.
SetColor (c: Word);
Задание цвета изображения.
SetBkColor(c: Word);
Установка цвета фона.
ClearDevice;
Очистка экрана в графическом режиме.
PutPixel (x,y:Integer,c:Word);
Вывод на экран точки с координатами (x,y) цветом c.
MoveTo (x,y: Integer);
Перемещение графического курсора в точку с координатами (x,y).
GetMaxX:Integer;
Функция, возвращающая максимальное значение координаты X.
GetMaxY:Integer;
Функция, возвращающая максимальное значение координаты Y.
SetFillStyle (p:Word, c: Word);
Задание образца закраски области; p - вид штриховки, с - ее цвет.
FloodFill (x,y: Integer, b: Word );
Закраска области, внутри которой находится точка с координатами (x,y). Параметр b определяет цвет границы закрашиваемой области.
OutText (s: String);
Вывод строки текста с текущего местоположения курсора.
OutTextXY (x,y: Integer;s: String);
Вывод строки текста, начиная с точки (x,y).

    Возможные цвета и виды штриховки перечислены в таблицах 2 и 3.

Таблица 2. Возможные цвета
Цвет
Числовое значение
Black (чёрный)
0
Blue (синий)
1
Green (зелёный)
2
Cyan (голубой)
3
Red (красный)
4
Magenta (фиолетовый)
5
Brown (коричневый)
6
LightGray (светло-серый)
7
DarkGray (тёмно-серый)
8
LightBlue (ярко-синий)
9
LightGreen (ярко-зелёный)
10
LightCyan (ярко-голубой)
11
LightRed (ярко-красный)
12
LightMagenta (малиновый)
13
Yellow (жёлтый)
14
White (белый)
15


Таблица 3. Виды штриховки
Вид
Числовое значение
Штриховка цветом фона.
0
Сплошная штриховка.
1
Штриховка (---).
2
Штриховка (///).
3
Утолщённая штриховка (///).
4
Утолщённая штриховка (\\\).
5
Штриховка (///).
6
Штриховка (+++).
7
Штриховка повёрнутыми плюсами (ххх).
8
Штриховка частыми (+++).
9
Штриховка точками.
10
Штриховка частыми точками.
11


    Замечания. 1. Параметры в процедурах SetColor и SetBkColor можно указывать как числами, так и словами, например, SetColor (Brown) или SetColor (6).
2. В символьно-цифровом режиме для очистки экрана используется процедура ClrScr. Для того, чтобы ею воспользоваться необходимо к программе подключить модуль Crt.
3. Начальное положение графического курсора - это точка с координатами (0,0) - левый верхний угол экрана дисплея. Это справедливо и для символьно-цифрового режима.

    Приведём пример программы, использующей некоторые из рассмотренных графических процедур.

    Изобразить окружность, заштриховать её и сделать подпись. Приведем текст программы, реализующей эту задачу.

Program Okr;
Uses Graph; {Подключение  графического модуля.}
Var
   gd,gm,x,y,r: Integer;
Begin
   gd:=detect;{Автоматический выбор типа и режима работы.}
   Writeln('Задайте координаты центра окружности');
   Readln(x,y);
   Writeln('Радиус окружности: ');
   Readln(r);
   {Перевод экрана в графический режим.}
   InitGraph(gd,gm,'F:\BP\BGI'); 
   SetColor(Green); {Установка цвета}
                    {выводимой  окружности.}
   SetBkColor(Yellow); {Установка цвета фона.}
   ClearDevice; {Очистка экрана.}
   Circle(x,y,r); {Построение окружности.}
   SetFillStyle(9,Red); {Задание вида штриховки.}
   FloodFill(x,y,Green); {Закрашивание окружности.}
   OutTextXY(x,y+10+r,'Окружность'); {Вывод подписи.}
   Readln; {Задержка.}
   CloseGraph; {Перевод экрана дисплея в текстовый режим.}
End. 
Текст этой программы можно взять здесь.

    Прокомментируем некоторые фрагменты программы.
    1. Третий параметр процедуры InitGraph будет иметь различные значения, в зависимости от инсталляции среды программирования Pascal.
    2. В процедуре FloodFill третий параметр задает цвет границы закрашиваемой области, а не цвет закраски!
    3. Закрашиваемая область должна быть замкнута и быть одного цвета! Это требование связано со способом закраски области. Если хотя бы одно из этих требований будет нарушено, краска "выльется" и "зальет" весь экран.

    На следующем шаге мы разберем несколько примеров составления графических программ.


Предыдущий шаг Содержание Следующий шаг