7.1 Proceduri si functii t3i14il
Rectangle
Procedura rectangle deseneaza un dreptunghi si este definita astfelS
Procedure rectangle (x1, y1, x2, y2:integer);
X1 si Y1 reprezinta coordonatele coltului stanga sus ale dreptunghiului.
X2 si Y2 reprezinta coordonatele coltului dreapta jos ale dreptunghiului.
Desenarea se face cu stilul si culoarea actuala.
Bar
Procedura Bar deseneaza un dreptunghi si il hasureaza cumodelul si culoarea
satabilite cu procedura SetFillPattern sau SetFillStzle. Procedura este definita
astfel:
Procedure Bar(x1,y1,x2,y1:integer);
X1 si Y1 reprezinta coordonatele coltului stanga sus ale dreptunghiului.
X2 si Y2 reprezinta coordonatele coltului dreapta jos ale dreptunghiului.
Bar3d
Procedura Bar3d deseneaza un parasesipiped dreptunghic si il hasureaza
cu modelul si culoarea actuala. Procedura este definita astfel:
Procedura Bar3d (x1,y1,x2,y2:integer; ad:word; top:boolean);
X1 si Y1 reprezinta coordonatele coltului stanga sus al corpului .
X2 si Y2 reprezinta coordonatele coltului dreapta jos al corpului.
DrawPolv
Procedura DrawPolv deseneaza olinie poligonala si este definita astfel:
Procedure DrawPolv (nrpct:word; var puncte );
Nrpct reprezinta numarul varfurilor, iar variabila puncte este untabel
ale carui elemente sunt de tip predefinit PoinzType care reprezinta coordonatele
(x,y) ale varfurilor. Tipul PointType este definit astfel:
Type PoinType= record x,y:integer;
End;
In cazul in care se doreste obtinerea unui poligon inchis
de n varfuri, variabila puncte trebuie sa fie un tablou de n+1 elemente
astfel incat coordonatele primului punct si coordonatele ultimului
punct sa coincida.
FillPolv
Procedura FillPolv deseneaza si hasureaza un poligon si este definta astfel:
Procedure FillPolv(nrpct:word; var puncte);
Nrpct reprezinta numarul varfurilor, iar variabila puncte este un tabel
ale carui elemente sunt de tip predefinit Pointtypeb, care reprezintacooronatele
(x,y) ale varfurilor. Conturulpoligonului este formt din linii ale caror
stil este determinat de procedura SetFillPattern sau SetFillStyl.
FloodFill
Procedura FloodFill hasureaza cu modelul actual o zona inchisa si este
definita astfel:
Procedure FloodFill(x,y:integer;c:word); x,y reprezinta coordonatele unui punct interior zonei inchise, iar c reprezinta
culoarea de hasurare, avand valori de la 0 pana la valoarea returnata
de functia GetmaxColor.
SetFillStyle
Procedura SetFillStyle fixeaza modelul de hasurare utilizat si culoarea de hasurare.
Procedura este definita astfel:
Procedure SetFillStyle(m:word;c:word); m defineste modul de hasurare, iar c defineste culoarea de hasurare.
Pentru definirea modului de hasurare se pot utiliza urmatoarele constante predefinite:
Const
EmptyFill=0;
SolidFill=1;
Linefill=2;
LtSlashFill=3;
SlashSill=4;
BkSlashFill=5;
LtBkSlashFill=6;
HatchFill=7;
XhatchFill=8;
InterLeaveFill=9;
WideDotFill=10;
CloseDotFill=11;
UserFill=12;
Hasurarea poate fi realizata pentru poligon, dreptunghi, paralelipiped, sector
de cerc, elipsa.
GetFillSettings
Procedura GetFillSettings permite utilizatorului sa obtina informatii despre
modelul actual de hasurare si de culoare, informatii care au fost fixate anterior
cu procedura SerFillStyle sau SetFillPattern.
Procedura este definita astfel:
Procedure GetFillSetting (var infohas:FillSettingsTyipe);
Infohas este de tip predefinit FillSettingstype si va contine informatii referitoare
la hasurare. Tipul FillSettingsType este defint astfel:
Type FillSettingstype=record
Pattern:word;
Color:word;
End;
SetFillPatten
Procedura SetFillPattern ofera utilizatorului posibilitatea de a defini un model
propriu de hasurare. Procedura este definita astfel:
Procedure SetFillPattern (m:FillPatternType; c:word);
M este de tip predefinit FillPatternType si descrie modelul de hasurare folosind
un tabel de optocteti, adica un tabel bidimensional de 8X8 biti.
C defineste culoarea de hasurare.Tipul SetFillPatern este definit astfel:
Type FillPatternType=arraya1..8i of byte;
GetFillPattern
Procedura GetFillPattern permite obtinerea informatiilor despre ultimul model
de hasurare stabilit printr-un apel de procedura SetFillpattern. Procedura este
definita astfel:
Procedure getfillPatter (var m:FillPatternType);
M este de tip predefinit FillPatterntype si va contine modelul utilizatorului.
7.2 Aplicatie program poligon; uses crt,graph; const triunghi: array a1..4i of pointtype=((X:50;Y:100), (X:100; Y:100), (X:150;Y:150),
(X:50;Y:100)); var
Gd,gm,I,width:integer;
Ch:char;
Fillinfo: FillSettingsType;
Begin
Gd:=detect;
Initgraph(gb,gm,’c:\bp\bgi’);
If graphresult<>grOk then halt(1);
Repeat
OutTextXY(10.0.’apasati’);
OutTextXY (10.10.’1-Bar 2-Bar3D 3-Triunghi 4-HasurareTriunghi 5-reptunghi
6-HasurareDreptunghi’);
OutText 10.470.’0-iesire’);
Ch:=readkey;
Case ch of
‘1’:begin for I:=1 to 5 do bar(I*10,I*10,succ(I)*10,200); end;
‘2’ begin bar3d(500,300,650,360,10,TopOn); bar3d(500,360,600,380,10,TopOff); end;
‘3’:begin drawpoly(SizeOff(triunghi)div SizeOff(PointType), triunghi); end;
‘4’:begin
Fillpoly(Sizeoff(triunghi) div sizeoff(pointtype), triunghi);
End;
‘5’:begin rectangle(100.100.200.200); end;
‘6’:begin
GetFillSettings(fillInfo);
Bar(0,0,50,50);
Setfillstyle(xhatchfill, GetMaxColor);
Bar(50, 0, 100, 50);
With FillInfo do
SetFillStyle (Pattern, Color);
Bar(100.0.150.50);
End;
End;
Until ch=’0’;
Readln;
CloseGraph;
End.