Координаты окна, страницы
SetViewPort (x1,y1,x2,y2,ClipOn) – процедура устанавливает прямоугольное окно на графическом экране, (x1,y1) – координаты левого верхнего, (x2,y2) – координаты правого нижнего угла окна. Координаты окна всегда задаются относительно левого верхнего угла экрана. ClipOn – логическое выражение, определяющее «отсечку» не умещающихся в окне элементов изображения. Если параметр ClipOn=True, элементы изображения, не умещающиеся в переделах окна, отсекаются, в противном случае границы окна игнорируются. Для управления этим параметром можно использовать следующие определенные в модуле константы:
Сonst
ClipOn=True; {Включить отсечку}
ClipOff=False; {Не включать отсечку}
GetViewSettings (ViewInfo) – процедура возвращает координаты и признак отсечки текущего графического окна. Параметр ViewInfo – переменная типа ViewPortType, который определен в модуле Graph следующим образом:
Type
ViewPortType=record
x1,y1,x2,y2 :Integer; {координаты окна}
Clip :Boolean; {признак отсечки}
end;
MoveTo (x,y) – процедура устанавливает новое положение указателя в позиции (x,y). Координаты определяются относительно левого верхнего угла окна или, если окно не установлено, экрана.
MoveRel (dx,dy) – процедура устанавливает новое положение указателя в относительных координатах (dx,dy). Здесь dx, dy – приращения новых координат указателя соответственно по горизонтали и вертикали. Приращения задаются относительно того положения, которое занимал указатель к моменту обращения к процедуре.
ClearDevice – процедура очищает графический экран. После обращения к процедуре указатель устанавливается в левый верхний угол экрана, а сам экран заполняется цветом фона, заданным процедурой SetBkColor.
ClearViewPort – процедура очищает графическое окно, а если окно не определено к этому моменту – весь экран. Указатель перемещается в левый верхний угол окна.
GetAspectRatio (x,y) – процедура возвращает значения x,y, позволяющие оценить соотношение сторон графического экрана в пикселах. Найденный с их помощью коэффициент может использоваться для построения правильных геометрических фигур.
Пример. Для построения квадрата со стороной n пиксел по вертикали, нужно использовать операторы:
GetAspectRatio (Xasp,Yasp);
Rectangle(x1,y1,x1+n*round(Yasp/Xasp),y1+n);
Если же n определяет длину квадрата по горизонтали, используется оператор
Rectangle(x1,y1,x1+n,y1+n*round(Xasp/Yasp));
SetAspeсtRatio (x,y) – процедура устанавливает масштабный коэффициент отношения сторон графического экрана. Здесь x,y – устанавливаемые соотношения сторон.
GetMaxX – функция возвращает максимальную координату экрана по горизонтали в текущем режиме работы.
GetMaxY – функция возвращает максимальную координату экрана по вертикали в текущем режиме работы.
GetX – функция возвращает текущую координату указатели по горизонтали.
GetY – функция возвращает текущую координату указатели по вертикали.
SetActivePage (номер_страницы) – процедура делает активной указанную страницу видеопамяти. Фактически процедура просто переадресует графический вывод в другую область видеопамяти. Активная страница может быть невидимой. Нумерация страниц начинается с нуля.
SetVisualPage (номер_страницы) – процедура делает видимой страницу с указанным номером. Нумерация страниц начинается с нуля.
Пример работы с видеостраницами. Программа сначала рисует квадрат в видимой странице и окружность – в невидимой. После нажатия Enter происходит смена видимых страниц.
Uses Graph,Crt;
Var
Driver, Mode:Integer;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,'');
If Driver<>HercMono then
SetGraphMode(Mode-1);
SetActivePage(0);
{заполняем видимую страницу}
Rectangle(10,10,GetMaxX div 2, GetMaxY div 2);
OutTextXY(0,0,'Page 0. Press Enter...');
{заполняем невидимую страницу}
SetActivePage(1);
Circle(GetMaxX div 2, GetMaxY div 2, 100);
OutTextXY(0,0,'Page 1. Press Enter...');
{переключаемся между страницами}
Readln;
SetVisualPage(1);
ReadLn;
SetVisualPage(0);
ReadLn;
CloseGraph;
End.
С помощью оператора
If Driver<>HercMono then SetGraphMode(Mode-1);
устанавливается многостраничный режим работы на адаптерах EGA, MCGA, VGA. После инициализации графики с Driver=Detect устанавливается режим работы с максимально возможным номером; перечисленные адаптеры могут работать только с одной графической страницей, чтобы обеспечить работу с двумя страницами, следует уменьшить номер режима.
Дата добавления: 2015-04-15; просмотров: 617;