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.