Процедура Arc - чертит дугу окружности

Процедура Circle - вычерчивает окружность.

Дуги, окружности, эллипсы

Процедура PieSlice - вычерчивает и заполняет сектор окружности.

Заголовок:

Procedure PieSlice(X,Y: Integer; BegA,EndA,R: Word);

В отличие от процедуры Sector, указывается лишь один горизонтальный радиус R, остальные параметры аналогичны параметрам процедуры Sector.

Сектор обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с помощью параметров, определенных процедурой SetFillStyle.

Заголовок:

Procedure Circle(X,Y: Integer; R: Word);

ЗдесьX, Y- координаты центра; R - радиус в пикселях.

Окружность выводится текущим цветом. Толщина линии устанавливается текущим стилем, вид линии всегда SolidLn (сплошная). Процедура вычерчивает правильную окружность с учетом изменения линейного размера радиуса в зависимости от его направления относительно сторон графического экрана, т.е. с учетом коэффициента GetAspectRatio. В связи с этим параметр R определяет количество пикселей в горизонтальном направлении.

Заголовок:

Procedure Arc(X,Y: Integer; BegA,EndA,R: Word);

Здесь X, Y - координаты центра; BegA, EndA - соответственно начальный и конечный углы дуги; R - радиус.

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

Вот как выглядят две дуги: одна с углами 0 и 90, вторая 270 и 540 градусов (рис. 14.6):

Рис.14.6. Иллюстрация процедуры Arc

Следующая программа создает это изображение:

Uses Graph, CRT;

var

d, r, е: Integer;

Xasp,Yasp: Word;

begin

{Инициируем графику}

d:= Detect;

InitGraphtd, r, '');

e:= GraphResult; if e <> grOK then

WriteLn(GraphErrorMsg(e))

else

begin

GetAspectRatio(Xasp,Yasp);

{R = 1/5 от вертикального размера экрана}

r:= round(Yasp*GetMaxY/5/XAsp);

d:= GetMaxX div 2; {Смещение второго графика}

e: = GetMaxY div 2; {Положение горизонтальной оси}

{Строим левый график}

Line (0,e,5*r div 2,e); {Горизонтальная ось}

Line (5*r div 4,e div 2,5*r div 4,3*e div 2);

Arc (5*r div 4,e,0,90,R); {Дуга}

OutTextXY(0,e+e div 8,'0 - 90'); {Надпись}

{Правый график}

Line (d,e,d+5*r div 2,e);

Line (d+5*r div 4,e div 2, d+5*r div 4,3*e div 2);

Arc (d+5*r div 4,e,270,540,R);

OutTextXY(d,e+e div 8,'270 - 540');

{Ждем нажатия на любую клавишу}

if ReadKey=#0 then d:= ord(ReadKey);

CloseGraph

end

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: