Лекция №7
Работа с графикой в Турбо Паскале
Множество графических процедур и функций среды программирования Borland Pascal собраны в модуле Graph. Подключение библиотеки графических функций и процедур к программе осуществляется строкой
uses Graph;
приведенной после заголовка программы или в общем списке подключаемых модулей.
Модули, указанные в разделе uses, должны находится или в рабочем каталоге, или в каталоге, указанном в строке UNITS окна диалога Options/Directories. Допустим модуль graph.tpu содержится в подкаталоге c:\tp70\units,
Тогда именно эту строку следует занести в поле ввода UNITS, не забыв сохранить настройки. Если этого не сделать, то при компиляции программы появится сообщение: Error 15: File not found (Graph.tpu).
Взаимодействие программы и видеосистемы в графических режимах обеспечивают драйверы, в которых применяется графический интерфейс фирмы Borland – Borland 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;