Иллюстрированный самоучитель по Turbo Pascal

Краски, палитры, заполнения

Процедура Sector

Вычерчивает и заполняет эллипсный сектор. Заголовок:

Procedure Sector(X,Y: Integer; BegA,EndA,RX,RY: Word);

Здесь BegA, EndA – соответственно начальный и конечный углы эллипсного сектора. Остальные параметры обращения аналогичны параметрам процедуры FillEllipse.

В следующей программе на экран выводятся случайные закрашенные эллипсы и секторы. Для выхода из программы нажмите любую клавишу.

Uses Graph, CRT;
var
d, r, e: Integer;
begin
{Инициируем графику}
d: = Detect; InitGraph(d, r, '');
e: = GraphResult; if e <> grOk then
WriteLn(GraphErrorMsg(e))
else
begin
{Создаем окно в центре экрана}
d: = GetMaxX div 4;
r: = GetMaxY div 4;
Rectangle(d,r,3*d,3*r);
SetViewPort(d+1,r+1.3*d-1.3*r-1,ClipOn);
{Цикл вывода}
repeat
SetFillStyle(Random(12), Random(succ(GetMaxColor)));
SetColor (Random(succ(GetMaxColor)));
Sector(Random(GetMaxX div),Random(GetMaxY div 2),
Random(360),Random(360),Random(GetMaxX div 5),
Random(GetMaxY div 5));
FillEl.lipse (Random (GetMaxX div 2),
Random(GetMaxY div 2),Random(GetMaxX div 5),
Random(GetMaxY div 5))
until KeyPressed;
if ReadKey=#0 then d: = ord(ReadKey);
CloseGraph
end
end.

Процедура PieSlice

Вычерчивает и заполняет сектор окружности. Заголовок:

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

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

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

Иллюстрированный самоучитель по Turbo Pascal › Использование библиотеки Graph › Краски, палитры, заполнения
Рис. 14.9. Иллюстрация процедуры PieSlice:

Uses Graph, CRT;
var
d, r, e: Integer;
begin
{Инициируем графический режим}
d: = Detect;
InitGraph(d, r, '');
e: = GraphResult; if e <> grOk then
WriteLn(GraphErrorMsg(e))
else
begin
{Выводим маленький сектор}
SetFillStyle(WideDotFill, White);
PieSlice(GetMaxX div 2+5,GetMaxY div 2+4.270.360.100);
{Выводим большой сектор}
SetFillStyle (SolidFill, Red);
PieSlice (GetMaxX div 2,GetMaxY div 2, 0.270.100).;
{Выводим надписи}
OutTextXY (GetMaxX div 2+90,GetMaxY div 2+70, '25%');
OutTextXY(GetMaxX div 2-50,GetMaxY div 2-20, '75%');
{Ждем нажатия на любую клавишу}
if ReadKey=#0 then d: = ord(ReadKey);
Close,Graph
end
end.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.