Графические возможности TurboPascal 7.0 — страница 8

  • Просмотров 6154
  • Скачиваний 577
  • Размер файла 3666
    Кб

константы: const ClipOn = True; {Включить отсечку} ClipOff = False; {He включать отсечку} Следующий пример иллюстрирует действие параметра ClipOn. Программа строит два прямоугольных окна с разными значениями параметра и выводит в них несколько окружностей. Для большей наглядности окна обводятся рамками (см. рис.1). Puc..1. Отсечка изображения в окне Uses Graph,CRT; Var x,y,e: Integer; xll,yll,xl2,yl2, {Координаты 1-го окна} x21,x22, {Левый верхний угол 2-ro} R, {Начальный радиус} k: Integer;

begin DirectVideo := False;{Блокируем прямой доступ к видеопамяти в модуле CRT} {Инициируем графический режим} x := Detect; InitGraph(x, у, ''); {Проверяем результат} e := GraphResult; if e <> grOk then WriteLn(GraphErrorMsg(e)) {Ошибка} else begin {Нет ошибки} {Вычисляем координаты с учетом разрешения экрана} Xll:=GetMaxX div 60; xl2:=GetMaxX div 3; yll:= GetMaxY div 4; yl2:= 2*yll; R:=(Xl2-Xll) div 4; x21:= Xl2*2; x22:=x21+xl2-Xll; {Рисуем окна} WriteLn('ClipOn:':10,'ClipOff:':40); Rectangle(xll, yll, xl2, yl2); Rectangle(x21, yll, x22, yl2) {Назначаем 1-е окно и рисуем четыре

окружности} SetViewPort(xll, yll, xl2, yl2, ClipOn); for к. := 1 to 4 do Circle(0,yll,R*k); {Назначаем 2-е окно и рисуем окружности} SetViewPort(x21, yll, x22, yl2, ClipOff); for к := 1 to 4 do Circle(0,yll,R*k); {Ждем нажатия любой клавиши} if ReadKey=#0 then к :=ord(ReadKey); CloseGraph end end. Процедура GetViewSettings. Возвращает координаты и признак отсечки те­кущего графического окна. Заголовок: Procedure GetViewSettings(var ViewInfo: ViewPortType); Здесь ViewInfo - переменная типа ViewPoriType. Этот тип в модуле Graph опреде­лен следующим образом: type ViewPortType

= record xl,yl,x2,y2: Integer; {Координаты окна} Clip : Boolean {Признак отсечки} end; Процедура MoveTo. Устанавливает новое текущее положение указателя. Заголо­вок: Procedure MoveTo(X,Y.- Integer); Здесь X, Y - новые координаты указателя соответственно по горизонтали и вертика­ли. Координаты определяются относительно левого верхнего угла окна или, если окно не установлено, экрана. Процедура MoveRel. Устанавливает новое положение указателя в относительных

координатах. Procedure MoveRel(DX,DY: Integer); Здесь DX,DY -приращение новых координат указателя соответственно по горизон­тали и вертикали. Приращения задаются относительно того положения, которое занимал указатель E моменту обращения к процедуре. Процедура ClearDevice. Очищает графический экран. После обращения к про­цедуре указатель устанавливается в левый верхний угол экрана, а сам экран заполня­ется цветом фона, заданным процедурой

SetBkColor. Заголовок: Procedure ClearDevice; Процедура ClearViewPort. Очищает графическое окно, а если окно не опреде­лено к этому моменту - весь экран. При очистке окно заполняется цветом с номером 0 из текущей палитры. Указатель перемещается в левый верхний угол окна. Заголовок: Procedure ClearViewPort; В следующей программе на экране создается окно, которое затем заполняется слу­чайными окружностями рис.2). После нажатия на любую клавишу окно очищает­ся.