p>
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;
{верхня площина потрібна}
T opOff = 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.
Заповнення більш складних геометричних фігур, у тому числі і неправильної форми, проводиться процедурою
FillPoly (NumPoints: Word; VAR PolyPoints)
Її параметри мають таке ж призначення, як і в процедурі DrawPoly. Єдина відмінність у тому, що координати першої та останньої вершини багатокутника можуть НЕ збігатися. Проте все одно вони будуть з'єднані лінією, і нутро фігури буде залита. br/>
USES Graph;
{підключений модуль Graph}
{$ I initgraf.pas}
{процедура ініціалізації}
CONST
В
our_ figure: Array [1 .. 4] of PointType =
(x: 319; y: 40),
{Завдання координат кінців}
(x: 398; y: 146),
{відрізків, які є сторонами}
(x: 240; у: 146),
{геометричній}
(x: 400; у: 40));
{фігури}
<...