- •Графический режим
- •Процедура инициализации графического режима InitGraph
- •InitGraph (var GraphDriver : Integer; {тип адаптера}
- •Var GraphMode : Integer; {режим графики}
- •Процедура закрытия графического режима CloseGraph
- •Обработка ошибок инициализации
- •Процедура DetectGraph
- •Очистка экрана
- •Координаты устройства и мировые координаты
- •Управление «текущим указателем»
- •Рисование графических примитивов и фигур Линии и их стили
- •Окружности, эллипсы и дуги
- •Построение прямоугольников и ломаных
- •Заливка областей изображения
- •Опрос и установка цветов пера и фона
- •Вывод текста
Процедура DetectGraph
Для тестирования графического адаптера в модуле Graphобъявлена процедура:
DetectGraph (var GraphDriver, GraphMode : Integer);
Эта процедура может быть вызвана до инициализации графического режима. Через формальный параметр GraphDriverвозвращается значение номер драйвера, а через параметрGraphMode – номер режима. Эти значения рекомендуется подставлять в качестве фактических параметров в процедуруInitGraph.
Пример работы с графическим режимом:
Program TestGraph;
Uses Graph;
Var
gDriver : Integer; {для графического адаптера}
gMode : Integer; {для графического режима}
ErrorCode : Integer; {код ошибки}
Begin
DetectGraph(gDriver, gMode); {опрос наличия адаптера и его типа}
ErrorCode := GraphResult; {получение кода ошибки, если таковая есть}
If ErrorCode <> grOK then
Writeln(GraphErrorMsg(ErrorCode));
Else
Begin
InitGraph(gDriver, gMode, ’’); {инициализация граф.режима}
... {работа в графическом режиме}
CloseGraph; {закрытие граф.режима}
End
End.
Очистка экрана
Процедура ClearDeviceочищает графически экран и устанавливает указатель позиции в положение (0, 0).
Процедура GraphDefaults, кроме очистки экрана, устанавливает ряд параметров графической системы:
графическое окно становится равным размеру экрана;
восстанавливается системная цветовая палитра;
переназначаются цвета основных линий и фона экрана;
толщина и стиль линий принимаются как по умолчанию;
цвет и шаблон заливки геометрических фигур и замкнутых ломаных принимается как по умолчанию;
переустанавливается активный шрифт и его стиль.
Координаты устройства и мировые координаты
В растровой компьютерной графике экран представляет собой прямоугольный массив адресуемых точек и любое изображение на нем образуется как композиция светящихся или погашенных пикселов ( так называется минимальный элемент изображения). Эти точки адресуются двумя целыми - горизонтальным номером точки nxи вертикальным номеромny:
0 <= nx <= GetMaxX
0 <= ny <= GetMaxY
Функции GetMaxXиGetMaxYвозвращают количество адресуемых точек по горизонтали и по вертикали минус единица.
Точка (0,0) обычно расположена в левом верхнем углу экрана дисплея. Координаты (nx, ny) называют координатами устройства, и могут принимать только целые значения.
В компьютерной графике используются еще две системы координат. Первая – физическая система координат (px, py),гдеpx– физическое расстояние на экране по горизонтали, аpy– по вертикали. Ее оси измеряются в физических единицах измерения.
Вторая система координат – мировая. Она представляет собой декартову систему (X, Y), определенную программистом, и является независимой от типа устройства отображения:
xmin < x < xmax
ymin < y < ymax
Параметры, которыми задаются диапазоны изменения xиy (xmin, xmax, ymin, ymax),определяют прямоугольную область в абстрактном математическом двумерном пространстве.
Для перевода текущих координат точки из мировой системы в систему устройства можно написать следующую процедуру:
Procedure WorldToDevice (x, y : Real; world_coord : TWorldRec;
var nx, ny : Integer);
Begin
nx := Round(( x - world_coord.Xmin )/
( world_coord.Xmax - world_coord.Xmin ))*GetMaxX;
ny := Round(( y - world_coord.Ymin )/
( world_coord.Ymax - world_coord.Ymin ))*GetMaxY;
End;
TWorldRec = record
Xmin, Ymin, {предельные значения мировых координат}
Xmax, Ymax : Real;
End;
