Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции+Pascal.doc
Скачиваний:
31
Добавлен:
02.12.2018
Размер:
647.17 Кб
Скачать

11.13 Построение заполненных областей изображения

11.13.1 Построение заполненного сектора эллипса

Sector(X,Y, StAngle, EndAngle, XR, YR)

X, Y – центр окружности дуги.

StAngle, EndAngle – начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки.

Radius – радиус.

Эллипс (сектор эллипса) будет залит цветом по текущему шаблону.

Построение заполненного сектора круга

PieSlice(X,Y, StAngle, EndAngle, Radius)

Сектор круга (круг, если StAngle=0 и EndAngle=359) будет заполнен текущим узором.

11.13.2 Построение заполненного эллипса

FillEllipse(X, Y, XR, YR)

XR, YR – задают горизонтальную и вертикальную оси.

X, Y – координаты центра эллипса

11.13.3 Построение заполненных сложных геометрических фигур

FillPoly(NumPoints, PolyPoints)

Эта процедура по своему действию очень похожа на процедуру DrawPoly и имеет такие же параметры. Различие лишь в том, что многоугольник, который рисуется процедурой FillPoly, всегда замкнутый, а область, ограниченная контуром полученной фигуры, закрашивается.

Пример. Построение геометрических фигур.

Uses Graph, Crt;

VAR

GD,GM:integer;

Radius, I, Width, K:Integer;

Y0, Y1, Y2, X1, X2:integer;

Pattern:FillPatternType;

Points:Array[1..6] Of PointType;

BEGIN

GD:=vga; GM:=1;

Initgraph(gd,gm,'C:\tp7\bgi');

IF GraphResult<>0 then Halt(1);

SetBkColor(0); SetColor(2); {Цвет фона и изображения}

I:=0;

For Radius:=1 to 5 Do Begin {Построение окружностей}

SetColor(radius+4);

Circle(150,150,Radius*25);

Inc(I); If I=4 Then I:=0;

End;

ReadLn;

ClearDevice; SetBkColor(1); SetColor(5);

SetLineStyle(0,0,3); {установка стиля линии}

Ellipse(130,130,0,360,30,50); {Построение эллипса}

ReadLn;

ClearDevice; SetColor(4);

Ellipse(130,130,0,180,100,70); {построение эллиптической дуги}

ReadLn;

ClearDevice; K:=4;

For Radius:=1 to 5 Do Begin

SetColor(K);

Arc(300,100,0,90,Radius*20); {построение дуги}

Inc(K);

End;

ReadLn;

ClearDevice; Width:=20; SetColor(1); SetBkColor(11);

For I:=1 to 5 Do Begin

SetFillStyle(7, I+4); {Определение стиля заполнения}

Bar(I*Width, I*20, Succ(I)*Width, 200); {Построение прямоугольников}

End;

SetFillStyle(5,12);

Bar(150,150,250,250);

ReadLn;

SetFillStyle(8,4); {Построение параллелепипеда с верхней плоскостью}

ClearDevice;

Y1:=100; Y2:=200; X1:=230; X2:=300;

SetLineStyle(3,0,3); {Определение стиля линии}

Bar3d(x1,y1,x2,y2,10,TopOn);

ReadLn;

ClearDevice; {Построение параллелепипеда без верхней плоскости}

SetLineStyle(0,0,1); SetFillStyle(11,1);

Bar3d(X1,Y1,X2,Y2,10,TopOff);

ReadLn;

{Пользовательский шаблон заполнения}

ClearDevice; SetColor(6);

SetLineStyle(0,0,3); { Стиль линии}

pattern[1]:=31; pattern[2]:=62; {заполнение массива}

pattern[3]:=124; pattern[4]:=248;

pattern[5]:=124; pattern[6]:=62;

pattern[7]:=31; pattern[8]:=0;

SetFillPattern(pattern,12); {Задание шаблона пользователя}

Bar(10,10,GetMaxX div 2,GetMaxY div 2);

Rectangle(10,10,GetMaxX div 2, GetMaxY div 2);

ReadLn;

{Построение закрашенного сектора эллипса}

ClearDevice; SetBkColor(3); SetColor(4);

SetFillStyle(7,14);

Sector(100,100,0,90,50,70);

ReadLn;

{Построение закрашенного сектора круга}

ClearDevice; SetFillStyle(1,14);

PieSlice(150,150,90,360,100);

ReadLn;

{Построение эллипса, заполненного текущим цветом}

ClearDevice;

SetFillStyle(6,13); SetLineStyle(3,0,1);

FillEllipse(200,200,50,100);

ReadLn;

{Построение закрашенного многоугольника}

ClearDevice; Randomize;

SetLineStyle(0,0,1); SetFillStyle(11,1);

{Определение случайных координат вершин}

For I:=1 To 5 Do Begin

points[i].X:=random(getmaxX); points[i].y:=random(getmaxY);

End;

points[6].x:=points[1].y; points[6].y:=points[1].y;

FillPoly(6,points);

ReadLn;

CloseGraph;

End.

11.14 Установка цвета

11.14.1 Установка цвета фона

SetBkColor(Color)

Color – новый цвет фона

11.14.2 Установка цвета изображения

SetColor(Color)

Color – новый цвет изображения

11.15 Заполнение областей изображения

FloodFill(X,Y,Border)

Служит для заполнения заданным с помощью SetFillStyle и SetFillPattern стилем области, расположенной либо внутри замкнутого контура, либо вне его.

X,Y – координаты точки внутри или вне замкнутого контура.

Border – задает цвет контура.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]