Управление текущим указателем
Чтобы построить изображение, необходимо обязательно указать начальную позицию. В текстовых режимах эту позицию определяет положение курсора, который размещается каждый раз за последним отображенным символом и указывает на местоположение следующего. В графических режимах видимого курсора нет, но есть невидимый текущий указатель СР (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 Все права принадлежат авторам размещенных материалов.
|