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

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

конеч­ный углы дуги; R - радиус. Углы отсчитываются против часовой стрелки и указываются в градусах. Нулевой угол соответствует горизонтальному направлению вектора слева направо. Если задать значения начального угла 0 и конечного - 359, то будет выведена полная окружность. При вычерчивании дуги окружности используются те же соглашения относительно линий и радиуса, что и в процедуре Circle. Вот как выглядят две дуги: одна с углами 0 и

90, вторая 270 и 540 градусов (рис. 14.6): Процедура Ellipse. Вычерчивает эллипсную дугу. Заголовок: Procedure Ellipse(X,Y: Integer; BegA,EndA,RX,RY: Word); Здесь X, Y - координаты центра; BegA, EndA - соответственно начальный и конечный: углы дуги; RX, RY- горизонтальный и вертикальный радиусы эллипса в пикселях. При вычерчивании дуги эллипса используются те же соглашения относительно лв-ний, что и в процедуре Circle, и те же соглашения относительно углов, что и в процедуре Arc.

Если радиусы согласовать с учетом масштабного коэффициента GetAspectRatio, будет вычерчена правильная окружность. В следующей программе вычерчиваются три эллипсных дуги (рис. 14.7) при разных отношениях радиусов. Замечу, что чем выше разрешение графического экрана, тем ближе к единице отношение сторон и тем меньше первый график отличается от третьего. Uses Graph, CRT; Var d,r,e: Integer; xa,ya: Word; begin {Инициируем графику} d := Detect; InitGraph(d, r, ' ') ; e := GraphResult; if e

<> grOK then WriteLn(GraphErrorMsg(e)) else begin {Первый график} OutTextXY(50,40,'RX = RY'); {Надпись} Line (0,100,160,100); {Ось X} Line (80,55,80,145); {Ось У} Ellipse (80,100,180,90,40,40); {Второй график} OutTextXY(260,40,'RX = 5*RY'); Line (190,100,410,100); Line (300,55,300,145); Ellipse (300,100,0,359,100,20); {Третий график} OutTextXY(465,40,'Aspect Ratio'); Line (440,100,600,100); Line (520,55,520,145); GetAspectRatio(xa, ya) ; Ellipse (520,100,0,270,40,round(40*(xa/ya))); if ReadKey=#0 then d := ord(ReadKey); CloseGraph end end. 7. Краски, палитры, заполнения Процедура SetColor. Устанавливает текущий цвет для выводимых линий и

симво­лов. Заголовок: Procedure SetColor(Color: Word); Здесь Color - текущий цвет. В модуле Graph определены точно такие же константы для задания цвета, как и в модуле CRT . Функция GetColor. Возвращает значение типа Word, содержащее код текущего цвета. Заголовок: Function GetColor: Word; Функция GetMaxColor. Возвращает значение типа Word, содержащее макси­мальный доступный код цвета, который можно использовать для обращения к SetColor. Заголовок: Function GetMaxColor: Word; Процедура

SetBkColor. Устанавливает цвет фона. Заголовок: Procedure SetBkColor(Color: Word); Здесь Color - цвет фона. В отличие от текстового режима, в котором цвет фона может быть только темного оттенка, в графическом режиме он может быть любым. Установка нового цвета фона немедленно изменяет цвет графического экрана. Это означает, что нельзя создать изо­бражение, два участка которого имели бы разный цвет фона. Для CGA-адаптера в режиме высокого разрешения