Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorna_robota_12_3cht__SA.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
232 Кб
Скачать
☆

6.2. Координатная система. Текущий указатель.

Верхний левый угол графического экрана определен как (0,0). Значение Х или колонки увеличиваются направо. Значение Y или строки увеличиваются вниз.

Функция GetМахХ Возвращает для текущего графического режима и драйвера самый правый столбец (разрешение по х).

Описание: GetMaxX

Тип результата: Целый (integer).

Примечания: Возвращает для текущего графического режима и драйвера максимальное значение х. В режиме 320х200 СGА, например, данная процедура будет возвращать значение 319. Процедуры GetМахХ и GetМахY чрезвычайно полезны для центрирования, определения границ области экрана и т.д.

Функция GetМахY Возвращает для текущего графического режима и драйвера самую нижнюю строку (разрешение по y).

Описание: GetMaxY

Тип результата: Целый (integer).

Пример:

uses Graph;

var Driver, Mode : integer;

i: integer;

begin

Driver := Detect; { перевести в графический режим }

InitGraph(Driver, Mode, '');

if GraphResult < 0 then

Halt(1);

Rectangle(0,0,GetMaxX,GetMexY); { нарисовать полную рамку экрана }

Readln;

CloseGraph;

end.

Многие графические системы поддерживают понятие текущего указателя (CP – Current Pointer). CP подобен понятию курсора в текстовом режиме, но в отличие от курсора CP не виден.

Write('ABC');

В текстовом режиме оператор Write будет помещать курсор в колонку непосредственно после символа C. Если C помещен в колонку 80, то курсор передвинется в первую колонку следующей строки. Если C помещен в колонку 80 25-ой строки, то весь экран сдвинется на одну строку вверх и курсор будет в первой колонке 25 строки.

Следующие команды перемещают CP: InitGraph, MoveTo, MoveRel, LineTo, LineRel, OutText, SetGraphMode, GraphDefaults, ClearDevice, SetViewPort, ClearViewPort. Последние 5 команд перемещают CP в (0,0).

Процедура MoveTo Перемещает текущий графический указатель(СР) в точку (x,y).

Описание: MoveTo(x, y : integer)

Процедура LineTo. Рисует прямую линию из точки, в которой находится текущий указатель, в точку (x,y).

Описание: LineTo(x, y : integer).

Примечания: Рисует прямую, толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Заметим, что

MoveTo(100,100);

LineTo(200,200);

эквивалентно

Line(100,100,200,200);

Первый метод требует больше времени для выполнения и большего объема памяти для выполняемого кода. Используйте процедуру LineТо только когда текущий указатель находится в одном из концов прямой. Отметим, что второй метод не изменяет значения текущего указателя.

Процедура LinеТо перемещает текущий указатель в точку (x,y).

Пример:

var Gd, Gm : integer;

begin

Gd := Detect;

InitGraph(gd, Gm, '');

if GraphResult <> 0 then

Halt(1);

Randomize;

repeat

LineTo(Random(200),Random(200));

until KeyPressed;

Readln;

CloseGraph;

end.

Процедура MoveRel Перемещает текущий указатель (СР) на расстояние, заданное относительными координатами от его текущей позиции.

Описание: MoveRel(Dx, Dy : integer)

Примечания: Процедура МоvеRеl перемещает текущий указатель (СР) в точку, заданную относительным расстоянием (Dх,Dy) от точки, в которой находится текущий указатель. Относительные команды перемещения и рисования полезны при вычерчивании различных объектов на экране, у которых начальная точка может быть изменена (чтобы, например, вычертить ту же самую фигуру в другом месте экрана).

Процедура LineRel Проводит прямую в точку, заданную относительным расстоянием от текущего указателя (СР).

Описание: LineRel(Dx,Dy)

Примечания: Данная процедура вычерчивает прямую линию из текущей точки в точку, заданную относительным расстоянием (Dх,Dу) от текущего указателя. Процедура рисует прямую, толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Относительные команды перемещения и рисования полезны при вычерчивании различных объектов на экране, у которых начальная точка может быть изменена (чтобы, например, вычертить ту же самую фигуру в другом месте экрана).

Пример:

uses Graph;

var Gd, Gm : integer;

begin

Gd:=Detect;

InitGraph(gd, Gm, '');

if GraphResult <> 0 then

Halt(1);

else

begin

MoveTo(1,2);

LineRel(10,10); { провести прямую в точку (11,12) }

end;

Readln;

CloseGraph;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]