Реферат: Модуль Graph в программе Turbo Pascal
GetModeName (GraphMode: Word): String. Функция возвращает строку, в которой содержится последовательно через пробелы разрешение, имя константы и иногда название палитры, например, '640x200 CGA'. Представленный пример поможет определить, в каких графических режимах может работать используемая ПЭВМ.
USES Graph; | {подключен модуль Graph} |
{$Iinitgraf.pas} | { процедура инициализации} |
VAR | |
mode: Integer; | |
BEGIN | |
Grlnit; | { инициализация} |
for mode := 0 to GetMaxMode do | { показвсехрежимов } |
OutTextXY(10, 10+mode*10, GetModeName( mode ) ); | |
ReadLn; | { пауза до нажатия...} |
CloseGraph | { закрытие графики} |
END. |
Функция GetDriverName : String позволяет получить имя используемого драйвера. Ее применение обосновано только в том случае, если в процедуре InitGraph переменная GraphDriver определена, как Detect.
Очистка экрана и переключение режимов
Очистка графического экрана. Две следующие процедуры выполняют почти одинаковые действия, только первая из них является как бы подмножеством второй:
ClearDevice
Эта процедура очищает графический экран и устанавливает указатель позиции в (0, 0), а процедура
GraphDefaults кроме очистки экрана устанавливает ряд параметров графической системы:
o графическое окно становится равным размеру экрана;
o восстанавливается системная цветовая палитра;
o переназначаются цвета основных линий и фона экрана;
o толщина и стиль линий принимаются как по умолчанию;
o цвет и шаблон заливки геометрических фигур и замкнутых ломаных принимается как по умолчанию;
o переустанавливается активный шрифт и его стиль.
Процедура GraphDefaults неявно вызывается при инициализации графики и выполняет, no-сути, все стартовые установки графических параметров.
Переключение режимов . Оно осуществляется процедурой SetGraphMode ( GraphMode : Integer )
Процедура переключает систему в указанный параметром GraphMode режим и очищает экран монитора. При этом все характеристики устанавливаются по умолчанию. Такие переключения возможны только в рамках текущего драйвера.
Процедура RestoreCRTMode . При написании некоторых пакетов, использующих и графические, и текстовые режимы работы, может использоваться процедура RestoreCRTMode, которая возвращает систему в текстовый режим, работавший до инициализации графики. Казалось бы, уже есть процедура с подобным действием — CloseGraph. Однако после нее возврат в графический режим должен проводиться через процедуру InitGraph, что довольно сложно. Если же воспользоваться процедурой RestoreCRTMode, то возвращение в графику будет достаточно простым
USES Graph; | {подключен модуль Graph} | |
{$IInitgraf.pas} | {процедура инициализации} | |
CONST | {константы - сообщения} | |
graph_str = ‘Это графический режим'; | ||
text_str = 'А это текстовый режим'; | ||
graph_ back = 'А это снова графический режим'; | ||
BEGIN | ||
Grlnit; | {инициализация графики} | |
Line(0,0,GetMaxX,GetMaxY }; | { диагональ экрана} | |
OutTextXY(0,100,graph_str); | { вывод первого сообщения} | |
ReadLn; | {пауза до нажатия ввода} | |
RestoreCRTMode; | {восстановлениетекстового режима} | |
Write{ text_str ); | { вывод второго сообщения} | |
ReadLn; | {пауза до нажатия ввода} | |
SetGraphMode(GetGraphMode); | {восстановление графического режима} | |
Une(0,0,GetMaxX,GetMaxY); | { диагональэкрана } | |
OutTextXY(0,100,graph_back); | {выводтретьегосообщения} | |
ReadLn; | { пауза до нажатия ввода} | |
CloseGraph | { закрытие графики} | |
End. |
Обратное переключение осуществляется при помощи функции GetGraphMode, которая возвращает номер текущего графического режима. При работе RestoreCRTMode выгрузки графического драйвера не происходит, т.е. он остается в памяти активным.
Системы координат и «текущий указатель»
В растровой компьютерной графике экран представляет собой прямоугольный массив адресуемых точек и любое изображение на нем образуется как композиция светящихся или погашенных пикселов. Эти точки адресуются двумя целыми - горизонтальным номером точки nx и вертикальным номером ny:
0 <= n х <= nx_max,
0 <= n у <= ny_max,
где nx_max и ny_max - количество адресуемых точек по горизонтали и по вертикали минус единица
В модуле Graph предусмотрена возможность программного опроса максимальных адресуемых координат экрана. Она реализована парой функций
GetMaxX : Integer ;
GetMaxY : Integer .
Возвращаемые ими значения соответствуют параметрам nx _ max и ny _ max , будут различаться для различных режимов и адаптеров. При адресации точек координатами, большими, чем эти значения, операция игнорируется.
Точка с адресом (0,0) обычно расположена в левом верхнем углу экрана дисплея. Координаты (nx, ny) называют также координатами устройства. Они могут принимать только целые значения.
«Текущий указатель» или, как его еще называют, графический курсор выполняет те же функции, что и курсор в текстовом режиме, однако является при этом невидимым. Положение графического курсора указывает на начальные координаты изображения графического примитива, выводимого «от текущей позиции».
Графические координаты задают положение точки на экране дисплея. Поскольку минимальным элементом, к которому имеет доступ программист, является пиксель, естественно в качестве графических координат использовать порядковые номера пикселей. Допустимый диапазон изменения графических координат составляет [0, rx- 1] для X и [0, ry - 1] для Y –координаты. Точкой отсчета является верхний левый угол экрана. Значения X- координаты отсчитываются слева направо, а Y-координаты - сверху вниз. Это отличает графические координаты от обычных декартовых координат, принятых в математике, и служит источником ошибок для начинающего программиста.
Для правильного отображения графика в декартовой системе координат на экране необходимо учесть следующее:
1. Графические координаты принимают только целочисленные значения.