Краски, палитры, заполнения
Процедура 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).
Рис. 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.