SetFillPattern ( PattMatrix : FillPatternType ; Color : Word )
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

передав ей в параметре PattMatrix матрицу шаблона заливки и указав цвет параметром Color. Эта процедура по действию аналогична SetFillStyle, но устанавливает только «самодельные» шаблоны. Процедура SetFillStyle удобнее, особенно в приложениях деловой графики (гистограммы, круговые диаграммы и т.п.). Задавая хотя бы раз новый шаблон, мы автоматически связываем его со значением UserFill и далее можем манипулировать всеми тринадцатью шаблонами. Если же задать UserFill, не определив перед этим новый шаблон, то функция GraphResult возвратит значение -11 (grError) и все установки вида шаблона и цвета останутся прежними. По умолчанию устанавливается шаблон SolidFill и цвет с. номером, максимальным для текущего графического режима.

В обеих процедурах назначения шаблона переменная Color определяет цвет, которым исполняется шаблон. Цвет фона при этом остается неизменным.

{ Демонстрация стандартных типов штриховки }

Program FillStDem;

Uses CRT,Graph;

Var

d,r,e,i,j,x,y : integer;

Begin

d:=Detect;

InitGraph(d,r,'');

e:=GraphResult;

if e<>grOk then

Writeln(GraphErrorMsg(e))

Else

Begin

SetGraphMode(0);

x:=GetMaxX div 9;

y:=GetMaxY div 7;

for j:=0 to 2 do

for i:=0 to 3 do

Begin

Rectangle((2*i)*x,(2*j+1)*y,

(2*i+1)*x,(2*j+2)*y);

SetFillStyle(i+j*4,j+1);

Bar((2*i)*x+1,(2*j+1)*y+1,

(2*i+1)*x-1,(2*j+2)*y-1);

end;

readln;

CloseGraph;

End

End.

Заливка областей изображения

 

Рассмотрим процедуры, непосредственно реализующие заливку. Имеется целый ряд процедур, рисующих графические фигуры и сразу же заполняющих их по заданному шаблону. Первая них — процедура

Bar ( X 1, Y 1, X 2, Y 2: Integer )

рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Она обычно используется в деловой графике для строения столбчатых диаграмм. Параметры (X1,Y1) и (X2, Y2) - координаты верхнего левого и правого нижнего углов прямоугольника. Еще более наглядное представление информации при рисовании диаграмм позволяет получить процедура

Bar3D (X1, Y1, X2, Y2: Integer; D3: Word; Top: Boolean)

Она рисует параллелепипед, лицевая сторона которого заливается по текущему шаблону, а глубина задается в пикселах параметром D 3. Параметр Тор задает режим отображения верхней плоскости: True - отображать, False - не отображать. Этот параметр необходим для того, чтобы можно было рисовать столбцы, стоящие друг на друге. В модуле Graph определены две константы для нее:

CONST

 

TopOn = True; {верхняя плоскость нужна}
TopOff = False; {верхняя плоскость не нужна}

{ Построение параллелепипеда }

Program Bar3Dem;

Uses CRT,Graph;

Var

d,r,e : integer;

Begin

d:=Detect;

InitGraph(d,r,'');

e:=GraphResult;

if e<>grOk then

Writeln(GraphErrorMsg(e))

Else

Begin

Bar3d( 80,100,120,180,15,TopOn);

Bar3d(150,150,190,180,15,TopOff);

Bar3d(230, 50,250,150,15,TopOn);

Bar3d(220,150,260,180,15,TopOn);

Bar3d(300,150,340,180,15,TopOff);

Bar3d(300, 50,340,150,15,TopOn);

readln;

CloseGraph;

End

End.

Следующие «заполняющие» процедуры работают с секторами окружностей и эллипсов. Рисование сектора эллипса, который будет залит цветом по текущему шаблону, осуществляется процедурой

Sector (X, Y: Integer; StartAngle, EndAngle, XRadius, YRadius: Word)

Параметры процедуры имеют тот же смысл, что и в процедурах Arc, Ellipse. для задания кругового сектора надо задавать YRadius с учетом коэффициента сжатия:

VAR

R , А, В: Word; {R - радиус кругового сектора}

BEGIN

GetAspectRatio ( А , В );

Sector (100, 100, 0, 90, R, R * Longlnt (A) div В );

END .

Этого же эффекта можно достичь, используя процедуру

PieSlice(X, Y: Integer; StartAngle, EndAngle, Radius: Word)

которая рисует сектор окружности, площадь которого заливается по текущему шаблону заполнения.

процедура

FillEllipse(X, Y: Integer; XRadius, YRadius: Word)

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

Заполнение более сложных геометрических фигур, в том числе и неправильной формы, производится процедурой

Дата: 2019-05-29, просмотров: 233.