- •Приложение: Процедуры управления графическим режимом
- •8.1. Инициализация и закрытие графического режима
- •Переключение текст — графика — текст
- •Обработка ошибок
- •Система координат
- •Перемещение текущего указателя
- •Экран и окно в графическом режиме
- •Вывод точки
- •Вывод линии
- •8.3. Работа с текстом Вывод текста
- •Вывод численных значений
- •Установка шрифта.
- •Выравнивание текста
- •SetTextJustify(Horiz,Vert:word);
- •8.4. Установка цвета и палитры
- •8.5. Построение графических фигур Построение прямоугольников
- •Построение многоугольников
- •Построение дуг и окружностей
- •Атрибуты графических фигур Установка цвета и стиля.
- •Коэффициент сжатия.
- •8.6. Работа с фрагментами изображения
- •GetImage (XI, Yl, x2, y2: Integer; var BitMap);
- •Приложение Процедуры управления графическим режимом
- •Функции управления графическим режимом
- •Процедуры управления экраном, окном, страницей
- •Процедуры управления цветом и палитрой
- •Функции управления цветом и палитрой
- •Функции работы с точками
- •Процедуры работы с точками
- •Процедуры работы с линиями
- •Процедуры построения фигур из линий
- •Процедуры построения криволинейных фигур
- •Процедуры работы с текстом
- •Функции работы с текстом
- •Процедуры обмена с памятью
- •Функции обмена с памятью
Переключение текст — графика — текст
Пример перехода из текстового режима в графический и наоборот, Фрагмент 1:
uses
Crt, Graph;
var
DriverVar, ModeVar: integer;
begin
ClrScr;
Writeln('Текстовый режим');
…
DriverVar:= Detect;
InitGraph(DriverVar,ModeVar, , ' ');
OutTextXY(300,250,'Графический режим')
…
RestoreCRTMode;
Writeln('Текстовый режим');
…
SetGraphMode(ModeVar);
OutTextXY(300,250,'Графический режим ')
…
CloseGraph
end.
Обработка ошибок
GraphResult
GraphErrorMsg.
Таблица 3. Коды ошибок
|
Константа |
|
Значение Описание |
|
GrOK |
0 |
Нет ошибок |
|
grNoInitGraph |
-1 |
Графика не инициализирована (используйте InitGraph) |
|
grNotDetected |
-2 |
Графическое устройство не обнаружено |
|
grFileNotFound |
-3 |
Файл драйвера устройства не найден |
|
grInvalidDriver |
-4 |
Неправильный файл драйвера устройства |
|
grNoLoadMem |
-5 |
Недостаточно памяти для загрузки драйвера |
|
grNoScanMem |
-6 |
Выход за пределы памяти при заполнении (scan fill) |
|
grNoFloodMem |
-7 |
Выход за пределы памяти при заполнении (flood fill) |
|
GrFontNotFound |
-8 |
Файл шрифта не найден |
|
grNoFontMem |
-9 |
Недостаточно памяти для загрузки шрифта |
|
grInvalidMode |
-10 |
Неверный графический режим для этого драйвера |
|
GrError |
-11 |
Графическая ошибка |
|
grIOerror |
-12 |
Ошибка графического ввода-вывода |
|
grInvalidFont |
-13 |
Неверный файл шрифта |
|
grInvalidFontNum |
-14 |
Неверный номер шрифта |
GraphErrorMsg(ErrorCode:integer):string - возвращает строку сообщения об ошибке, соответствующую коду ошибки.
Фрагмент 2. Пример диагностики ошибок, сообщения об ошибке и останова программы в случае ошибки:
{Процедура инициализации и анализа системных ошибок DriverVar и ModeVar описаны в основной программе}
bеgin
DriverVar:= Detect;
InitGraph(DriverVar,ModeVar, ' ' );
ErrorCode:= GraphResult;
if ErrorCode <> grOK then
begin
Writeln('Графическая системная ошибка:',
GraphErrorMsg(ErrorCode));
Halt(l);
end ;
end;
8.2. Базовые процедуры и функции модуля GRAPH
Система координат
координата Х
(0,0)
(GetMaxX,0)


координата Y
(0,GetMaxY) (GetMaxX, GetMaxY)
Рис. 1
Перемещение текущего указателя
MoveTo(X,Y:integer) перемещает текущий указатель в точку с координатами X,Y.
MoveRel(dX,dY:integer) перемещает текущий указатель на dX точек по горизонтали и на dY точек по вертикали.
GetX, GetY возвращают координаты текущего указателя:
var
Xpos, Ypos: integer;
. . .
Xpos := GetX; Ypos := GetY; . . .
Функции GetMaxX:integer и GetMaxY:integer возвращают максимально возможные для установленного режима значения Х- и Y-координат.
