Пример 8.9.
Эта программа демонстрирует работу с пикселами, случайными
эллипсами и секторами.
Демонстрация
Внимание: будет работать только если Turbo Pascal установлен в каталог C:\TP и каталог C:\TP\BGI содержит необходимый файл egavga.bgi.
Program RandomFigures;
Uses Graph, Crt;
Var
Key : Char;
GrDriver, GrMode : Integer;
Radius, MaxX, MaxY, Ugol : Word; {параметры процедур}
BEGIN
GrDriver := Detect; {автоопределение типа графического драйвера}
InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {установка графического режима}
SetTextStyle(DefaultFont, HorizDir, 2);
{установка шрифта, направления и размера символов}
OutTextXY(160, 50, 'Рисуем звездное небо');
Rectangle(110, 90, 520, 380); {рисование рамки }
Randomize; {инициализация датчика случайных чисел}
Repeat {цикл прерывается нажатием любой клавиши}
PutPixel(Random(GetMaxX-250)+120, Random(GetMaxY-210)+100,
Random(15)); {вывод пикселя в области, ограниченной рамкой}
Delay(5) {задержка}
until KeyPressed;
Key:=ReadKey; ClearDevice; {очистка графического экрана}
{---------------------------------------------------------------}
SetColor(White); {цвет рисования}
OutTextXY(140, 30, 'Рисуем случайные эллипсы');
Rectangle(100, 70, 560, 420); { рисование рамки }
MaxX := GetMaxX;
MaxY := GetMaxY;
Radius := MaxY div 10;
SetLineStyle(0, 0, 1); {толщина и стиль линии}
SetViewPort(101, 71, 559, 419, ClipOn); {установка окна внутри рамки}
Randomize; {инициализация датчика случайных чисел}
Repeat {цикл прерывается нажатием любой клавиши}
SetBkColor(Black); {цвет фона }
SetColor(Random(13)+1); {цвет рисования}
SetFillStyle(Random(12), Random(13)+1); {образец и цвет штриховки}
FillEllipse(Random(MaxX), Random(MaxY), {координаты центра эллипса}
Random(Radius), Random(Radius)); {полуоси эллипса}
until KeyPressed;
Key:=ReadKey;
ClearDevice; {очистка графического экрана}
{------------------------------------------------------------------}
SetColor(White); SetViewPort(1, 1, GetMaxX, GetMaxY, ClipOn);
OutTextXY(140, 20, 'Рисуем случайные секторы');
Rectangle(90, 60, 570, 420); {рисование рамки}
SetViewPort(92, 62, 569, 419, ClipOn); {установка окна внутри рамки}
Repeat {цикл прерывается нажатием любой клавиши}
SetFillStyle(Random(12), Random(13)+1); {изменение штриховки и цвета}
Ugol := Random(360); {угол сектора}
Sector(Random(MaxX-200), Random(MaxY-180), Random(Ugol), Ugol,
Random(Radius*2), Random(Radius*2)); {рисование сектора}
until KeyPressed;
ClearViewPort; {очистка окна}
CloseGraph; {закрытие графического режима}
END.