Любая информация при работе в графическом режиме на экране монитора представлена совокупностью светящихся точек – пикселей, которые определяются цветом и координатами – положением относительно левого верхнего угла экрана с координатами (0,0).
Дисплей может работать в нескольких графических режимах, каждому из которых соответствует свой формат изображения, т. е. разрешающая способность (количество пикселей по горизонтали и вертикали) экрана и набор используемых цветов.
Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY. Для этого наберите небольшую программу:
Uses Graph;
Var
GraphDriver, GraphMode: integer;
Begin
GraphDriver:=detect;
InitGraph(GraphDriver, GraphMode, ‘..\BGI’);
Writeln(GetMaxX, 'x', GetMaxY);
Readln;
CloseGraph;
End.
Примечание. Для нашего графического режима обычно значение максимальной координаты X равно 640 пикселям, а Y– 480 пикселям.
Чтобы точно строить изображение на экране, Вам нужно сначала нарисовать, как это должно выглядеть на бумаге. Для этого начертите в тетради систему координат графического режима.
x
Итак, отсчет начинается с верхнего левого угла с координатами (0;0), значение Х – столбец, отсчет слева направо; значение Y – строка, отсчет сверху вниз.
Чтобы строить изображение, нужно указать точку начала вывода. В графическом режиме нет видимого курсора, но есть так называемый невидимый текущий указатель (Current Pointer). После инициализации графического режима указатель стоит в точке (0;0). Чтобы переместить его в нужное место используют следующие процедуры:
MoveTo (X, Y), где переменные X, Y типа Integer – перемещает текущий указатель в точку с координатами (X,Y).
Например, MoveTo (200, 100)
MoveRel (dX, dY), где переменные dX, dY типа Integer – перемещает текущий указатель по горизонтали на расстояние, равное dX пикселям, а по вертикали на расстояние, равное dY пикселям. (Relation (англ.) – относительно)
Например, если после выполнения предыдущей процедуры текущий указатель находится в точке (200, 100), то после выполнения процедуры MoveRel (25, 150) он будет находится в точке с координатами (225, 250).
PutPixel(X, Y, Color), где переменные X, Y типа Integer, а Color типа Word – процедура выводит точку заданного цвета Color в точку с координатами (X, Y).
Задание. Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.
Для задания цвета точки можно использовать как слово на английском языке, так и цифру из следующей таблицы:
Цвет
Цвет
Код
Black
черный
Blue
синий
Green
зеленый
Cyan
бирюзовый
Red
красный
Magenta
малиновый
Brown
коричневый
LightGray
светло-серый
DarkGray
темно-серый
LightBlue
ярко-голубой
LightGreen
ярко-зеленый
LightCyan
ярко-бирюзовый
LightRed
ярко-красный
LightMagenta
ярко-малиновый
Yellow
желтый
White
белый
Line (X1, Y1, X2, Y2), где переменные X1, Y1, X2, Y2 типа Integer – рисуется линия от точки (X1, Y1) до точки (X2, Y2).
LineTo (X, Y),где переменные X, Y типа Integer – рисуется линия из точки, где находится в данный момент курсор в точку (X, Y).
LineRel (dX,dY),где переменные dX, dY типа Integer – рисуется линия из точки, где находится в данный момент курсор (X, Y) в точку (X+dX,Y+dY).
Задание. Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.
У Вас не получается нарисовать линии? В чем же причина? Если внимательно посмотреть на эти процедуры и сравнить их с процедурой PutPixel, то можно заметить, что в них нет параметра, указывающего цвет рисования линии. В этом и других аналогичных случаях цвет задается специальной процедурой.
SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов.
Задания. 1. Исправьте свою программу так, чтобы процедуры рисовали линии различных цветов.
2. В начерченной ранее системе координат изобразите на чертеже точки: