SUBPROGRAME ORIENTATE SPRE POLIGOANE SI HASURARI, Aplicatie, Proceduri si functii



SUBPROGRAME ORIENTATE SPRE POLIGOANE SI HASURARI

 

7.1 Proceduri si functii

Rectangle 57779hel46qcc5c

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. ec779h7546qccc

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=array[1..8] 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 [1..4] 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.