Здавалка
Главная | Обратная связь

Управление текущим указателем



Чтобы построить изображение, необходимо обязательно указать начальную позицию. В текстовых режимах эту позицию определяет положение курсора, который размещается каждый раз за последним отображенным символом и указывает на местоположение следующего. В графических режимах видимого курсора нет, но есть невидимый текущий указатель СР (current pointer), выполняющий те же функции, что и курсор в текстовом режиме.

В графическом режиме для перемещения СР используются процедуры MoveTo и MoveRel.

Процедура MoveTo (X,Y:INTEGER) перемещает текущий указатель в точку с координатами X, Y. Процедура MoveRel (dX,dY:INTEGER) перемещает СР на dX точек по горизонтали и на dY точек по вертикали относительно последнего положения текущего указателя. При задании положительных значений dX или dY значения соответствующих координат текущего указателя будут увеличиваться, при задании отрицательных – уменьшаться.

Для определения текущего положения графического курсора используются функции

GetX:INTEGER

GetY:INTEGER

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

В приведенном ниже фрагменте программы производится позиционирование указателя и определение его координат.

USES Graph;

VAR

GrDriver,GrMode:INTEGER;

BEGIN

GrDriver:=Detect;

InitGraph(GrDriver,GrMode,'');

IF GraphResultOO THEN

BEGIN

WriteLn{'Ошибка инициализации графики!'};

Halt(1);

END;

{перемещение в центр экрана}

MoveTo(GetMaxX DIV 2,GetMaxY DIV 2);

OutTextXY(GetX,GetY,'Указатель в центре');

{смещение указателя на некоторую величину}

MoveRel(-GetX DIV 2,-GetX DIV 2);

OutText('Указатель смещен') ;

ReadLn;

CloseGraph;

END.

 


Основные процедуры и функции, используемые в графическом режиме

Процедура Arc

procedure Arc (X, Y: Integer; StAngle, EndAngle, Radius: Word);

Строит дугу окружности текущим цветом с учетом масштабов по осям. Текущий цвет задается процедурой SetColor, текущие параметры линии - процедурой SetLineStyle. Изменение относительных масштабов изображения по вертикали и горизонтали осуществляется процедурой SetAspectRatio.

X, Y – координаты центра дуги;

StAngle – угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной слева направо;

EndAngle – угол до конечное точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной слева направо;

Radius – радиус дуги.

Процедура Bar

procedure Bar(Xl, Yl, X2, Y2: Integer);

Строит прямоугольник, закрашенный текущим орнаментом и цветом заполнения. Орнамент и цвет заполнения задаются процедурой SetFillStyle или SetFillPattern.

XI, Yl, X2, Y2 – координаты левого верхнего и правого нижнего углов прямоугольника.

Процедура Bar3D

procedure Bar3D(Xl, Yl, X2, Y2: Integer; Depth Word; Top:Boolean);

Строит параллелепипед. закрашенный текущим орнаментом и цветом заполнения. Орнамент и цвет заполнения задаются процедурой SetFillStyle или SetFillPattern.

XI, Yl, X2, Y2 – координаты левого верхнего и правого нижнего углов передней грани;

Depth – ширина боковой грани (отсчитывается по горизонтали);

Top – признак включения верхней грани (если True - верхняя грань вычерчивается, в противном случае верхняя грань не отображается).

Процедура Circle

procedure Circle(X, Y: Integer; Radius: Word);

Строит окружность текущим цветом с учетом масштабов по осям. Текущий цвет задается процедурой SetColor, текущие параметры линии – процедурой SetLineStyle. Изменение относительных масштабов изображения по вертикали и горизонтали осуществляется процедурой SetAspectRatio.

X, Y – координаты центра окружности;

Radius – радиус окружности.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.