- •25. Модуль graph
- •25.1. Файлы bgi и содержание модуля Graph.
- •25.2. Инициализация и закрытие графического режима.
- •25.3. Обработка ошибок инициализации.
- •25.4. Классификация и анализ графических режимов.
- •25.5. Диапазоны графических режимов.
- •25.6. Очистка экрана и переключение режимов.
- •25.7. Управление режимом вывода образцов на экран.
- •25.8. Системы координат и текущий указатель.
- •Рисование графических примитивов и фигур. Линии и их
- •25.10. Коэффициент сжатия изображения.
- •25.11. Окружности, эллипсы, дуги.
- •25.12. Построение прямоугольников и ломаных.
- •25.13. Управление цветами и шаблонами заливки.
- •25.14. Заливка областей изображений.
25.6. Очистка экрана и переключение режимов.
Функция ClearDevice очищает графический экран и устанавливает указатель позиции в положение (0,0), а процедура GraphDefaults кроме очистки экрана, устанавливает ряд параметров графической системы:
1)графическое окно становится равным размеру экрана;
2)восстанавливается системная цветовая палитра;
3)переназначаются цвета основных линий и фона экрана;
4)толщина и стиль линий принимаются как бы по умолчанию;
5)цвет и шаблон заливки геометрических фигур и замкнутых ломаных принимаются как бы по умолчанию;
6)переустанавливается активный шрифт и его стиль;
Процедура GraphDefaults неявно вызывается при инициализации графики и выполняет стартовые установки графических параметров.
Переключение режимов осуществляется процедурой SetGraphMode(GraphMode:Integer), которая переключает систему в указанный параметром GraphMode графический режим и очищает экран монитора. Дополнительные характеристики устанавливаются по умолчанию. Переключения возможны в рамках текущего драйвера.
Процедура RestoreCRTMode возвращает систему в текстовый режим, работавший до инициализации графики. Обратное переключение осуществляется без процедуры инициализации графики, т.к. не происходит выгрузки графического драйвера.
25.7. Управление режимом вывода образцов на экран.
При рисовании образцов на экране можно назначить режим поразрядного совмещения изображения. Режим определяет будет ли стерта при наложении двух точек «лишняя», и каким способом можно снять «верхнее» изображение с экрана. Управляя этим режимом, можно получать эффекты мультипликации. Сам режим задаётся процедурой SetWriteMode(WriteMode: Integer). Для задания параметра WriteMode в модуле Graph описаны 5 констант, каждой из которых соответствует поразрядная операция:
Имя константы |
Значение |
Логические операция |
Действие операции |
CopyPut |
0 |
MOV |
Замещение |
XORPut |
1 |
XOR |
Исключающее ИЛИ |
ORPut |
2 |
OR |
ИЛИ |
ANDPut |
3 |
AND |
И |
NOTPut |
4 |
NOT |
НЕ |
25.8. Системы координат и текущий указатель.
Экран - прямоугольный массив адресуемых точек, и любое изображение образуется как композиция светящихся или погашенных пикселов. Каждая точка имеет горизонтальный номер nx и вертикальный номер ny.
В модуле Graph предусмотрена возможность программного опроса максимальных адресуемых координат экрана функциями
GetMaxX: Integer;
GetMaxY: Integer;
Возвращаемые ими значения соответствуют параметрам nx_max и ny_max. Точка с адресом (0,0) обычно расположена в левом верхнем углу экрана дисплея. Координаты (nx, ny) называют также координатами устройства. Они могут принимать только целые значения. Кроме того, используют физическую систему координат (px, py), где рх - физическое расстояние на экране по горизонтали, а ру - по вертикали. Расстояние измеряется в дюймах или пикселях.
Также есть так называемая мировая система координат. Это декартова система (Х,Y), определённая программистом, является независимой от типа устройства отображения. Параметры, которыми задаются диапазоны изменение X и Y (Xmin, Xmax, Ymin, Ymax), определяют прямоугольную область в абстрактном математическом двумерном пространстве.
«Текущий указатель» или графический курсор выполняет те же функции, что и курсор в текстовом режиме, при этом он является невидимым.
Положение графического курсора указывает на начальные координаты изображения графического примитива, выводимого «от текущей позиции». В графическом режиме текущий указатель перемещается специальными процедурами. В частности, процедура MoveTo(x,y:Integer) перемещает его в точку экрана с координатами (x,y). Другая процедура MoveRel(dx,dy:integer) перемещает текущий указатель на dx пикселей по горизонтали и соответственно на dy по вертикали относительно последнего положения текущего указателя. Положительные значения dx, dy увеличивают его координаты, а отрицательные - уменьшают. В системе координат дисплея ось Y направлена вниз. Если указатель надо перенести вверх, то приращение dy должно быть отрицательным.
Для определения текущего положения графического курсора используются функции GetX: Integer; GetY: Integer; возвращающие положение указателя соответственно по оси X и по оси Y.
Положение текущего указателя изменяют также процедуры LineTo, LineRel, OutText.
Все процедуры инициализации и очистки экрана (InitGraph, GraphDefaults, ClearDeviice, SetGraphMode, SetViewPort, ClearViewPort) устанавливают его в положение (0,0).
