передав ей в параметре 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.