Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
09.03.2016
Размер:
65.54 Кб
Скачать

9

Лекция №7

Работа с графикой в Турбо Паскале

Множество графических процедур и функций среды программирования Borland Pascal собраны в модуле Graph. Подключение библиотеки графических функций и процедур к программе осуществляется строкой

uses Graph;

приведенной после заголовка программы или в общем списке подключаемых модулей.

Модули, указанные в разделе uses, должны находится или в рабочем каталоге, или в каталоге, указанном в строке UNITS окна диалога Options/Directories. Допустим модуль graph.tpu содержится в подкаталоге c:\tp70\units,

Тогда именно эту строку следует занести в поле ввода UNITS, не забыв сохранить настройки. Если этого не сделать, то при компиляции программы появится сообщение: Error 15: File not found (Graph.tpu).

Взаимодействие программы и видеосистемы в графических режимах обеспечивают драйверы, в которых применяется графический интерфейс фирмы BorlandBorland Graphics Interface (BGI).Драйверы, поставляемые сBorlandPascal, собраны в файлах, имеющих расширениеBGI: CGA.BGI, EGAVGA.BGI, HERC.BGIи др. Каждый из этих драйверов обеспечивает работу в нескольких графических режимах. Поддерживаемые графические режимы группируются в файлах*.BGIпо принципу схожести организации видеопамяти.

Графическая библиотека BorlandPascalобеспечивает все графические режимы, которые были актуальны на время её создания. Для использования наиболее современных режимов, напримерSVGA, необходимо подключение поставляемых отдельно драйверов. В излагаемом материале мы ограничимся возможностями 16-цветного режимаVGAс высоким разрешением.

Инициализация графического режима

В Турбо Паскале предусмотрена процедура

procedure InitGraph(var GraphDriver: Integer; var GraphMode: Integer;

PathToDriver: string);

Аргументы имеют целочисленный тип и определяют графический режим. Чтобы не запоминать целочисленные имена иGraphMode, в модуле предусмотрены константы графического режима, имена которых совпадают с названием режима. Наиболее простой способ выбора необходимого графического драйвера и режима – автоматический. Чтобы графический режим определялся автоматически, номер графического драйвераGraphDriver, передаваемый в процедуру, должен равняться 0 или константеDetect=0. Пример инициализации графического режима:

program graph1;

uses Graph,Crt;

var GraphDriver, GraphMode: integer;

const path='c:\tp70\bgi';

begin

GraphDriver:=detect;

InitGraph(GraphDriver,GraphMode,path);

if GraphResult <> GrOk then begin

writeln('Графический режим не установлен ');

Halt

end;

end.

Установка цвета

Драйвер EGAVGA.BGIпозволяет использовать 16 цветов. Каждому цвету присвоен код - целое число, которое используется процедурами и функциями Паскаля. Для того чтобы не запоминать эти коды, определено 16 констант, имена которых говорят сами за себя:

Black

Черный

0

DarkGray

Темно-серый

8

Blue

Синий

1

LightBlue

Голубой

9

Green

Зеленый

2

LightGreen

Светло-зеленый

10

Cyan

Циан-морская волна

3

LightCyan

Светлый циан

11

Red

Красный

4

LightRed

Ярко-красный

12

Magenta

Фиолетовый

5

LightMagenta

Светло-фиолетовый

13

Brown

Коричневый

6

Yellow

Желтый

14

LightGray

Светло-серый

7

White

Белый

15

Цвет выводимых в графическом режиме на экран линий и символов можно задать процедурой SetColor(Color:word);, аргумент которой – целое число от 0 до 15 или имя одной из приведенных выше констант. Если процедураSetColor не вызвана, используется белый цвет. Установка цвета действует на те линии и символы, которые выводятся на экран после её вызова, но не меняет цвет объектов, выведенных на экран до её вызова.

Процедура SetBkColor(Color:word), устанавливает цвет фона для всего экрана. Если процедура установки цвета фона не вызвана, экран будет черным.

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

program Rectan_Circle_Line;

uses

Graph,Crt;

Соседние файлы в папке Lecture_Pascal