Sunteți pe pagina 1din 6

GRAFICA N BORLAND PASCAL 7.

0
A. Descrierea modului grafic n mediul Borland Pascal 7.0 calculatorul poate lucra n dou moduri: text (mod n care ecranul are 80 de coloane i 50 de linii) i grafic (n care ecranul poate avea o rezoluie de pn la 640x480). Pentru a putea trece de la lucrul n mod text la cel grafic sunt necesare cteva precizri: - o anumit plac grafic poate lucra n mai multe moduri grafice i fiecrui mod grafic i corespunde un driver grafic specific. - iniializarea unui mod grafic se realizeaz prin apelul procedurii InitGraph i are forma: InitGraph(driver,mod_grafic,cale) unde: driver este o variabil a crei valori reprezint codul unui driver grafic (fiier cu extenisia bgi n Pascal), mod_grafic este o variabil a crei valori reprezint codul unui mod grafic (numr), cale este o expresie de tip string (calea ctre driver). - pentru a simplifica lucrurile, sftuim programatorii s copieze fiierele urmtoare n folderul care conine programul ce utilizeaz modul grafic: egavga.bgi (este driverul cu modul grafic ce are reyoluia cea mai mare i care se gsete in bp\bgi) i graph.tpu (este unit-ul care conine subprogramele grafice i care se gasete n bp\units). n continuare este descris un program care iniializeaz modul grafic i tiprete rezoluia la care se va lucra i numrul maxim de culori disponibile cu driverul egavga.bgi. Exemplu:
uses graph; var gd,gm:integer; s:string; begin gd:=detect; InitGraph(gd, gm,''); str(getmaxx+1,s); outtext(s); str(getmaxy+1,s); outtext(' '+s); str(getmaxcolor+1,s); outtext(' '+s); Readln;closegraph; end.

{detecteaz driverul disponibil} {iniializeaz modul grafic cu driverul detectat} {determin numrul maxim de coloane ale ecranului} {tiprete pe ecran numrul transformat n string} {determin numrul maxim de linii ale ecranului} {tiprete pe ecran numrul transformat n string} {determin numrul maxim de culori care pot fi utilizate} {tiprete pe ecran numrul transformat n string}

Coordonatele unui punct de pe ecran, numit i pixel, reprezint coloana i linia pe care acesta se situeaz, ncepnd cu colul din stnga sus al ecranului care are coordonatele 0,0. Configuraia ecranului este dat de figura urmtoare: (0,0). coloan, linie (x,y)

(639,479)
1

Din momentul n care modul grafic a fost iniializat se poate utiliza orice subprogram din unitul graph.tpu, subprograme care vor fi descrise n continuare, combinarea lor depinznd doar de imaginaia programatorului. Coordonatele ecranului din colul din dreapta jos se pot obine apelnd funciile GetMaxX i GetMaxY, fr parametrii. Revenirea la modul video iniial (adic modul text) se realizeaz prin apelul procedurii CloseGraph. 1. Culori Procedura InitGraph realizeaz iniializarea paletei de culori. Culorile sunt codificate cu ajutorul numerelor de la 0 la 15 n urmtoarea ordine:
Black Blue Green Cyan Red Magenta 0 1 2 3 4 5 Brown LightGray DarkGray LightBlue LightGreen LightCyan 6 7 8 9 10 11 LightRed LightMagenta Yellow White 12 13 14 15

Pentru a modifica o anumit culoare pentru fondul ecranului, care implicit este negru se va utiliza procedura: SetBkColor(culoare) n locul parametrului culoare se poate specifica numrul asociat culorii sau numele culorii dorite. Pentru a modifica o anumit culoare obiectele sau textele care se vor afia pe ecran, care implicit sunt albe se va utiliza procedura: SetColor(culoare) Bineneles c aceste setri se vor face nainte de a se desena sau scrie pe ecran. Exemplu:
uses graph; var gd,gm:integer; begin gd:=detect; InitGraph(gd, gm,''); setbkcolor(blue); setcolor(4); outtext('Fond albastru - text rosu'); {tipareste un sir de caractere specificat pe ecran} Readln; closegraph; end.

2. Texte Pentru stabilirea atributelor asociate textelor se utilizeaz procedura: SetTextStyle(tip_caractere, direcie, mrime) unde: - parametrul direcie determin direcia de afiare: orizontal sau vertical; (valorile sunt: 0 pentru orizontal i 1 pentru vertical sau HorizDir, VertDir ) - parametrul tipcaractere determin tipul fontului care se va utiliza; (valorile sunt: 0, 1, 2, 3, 4 sau DefaultFont, TriplexFont, SmallFont, SansSerifFont, GothicFont) - parametrul mrime determin dimensiunea caracterelor care se vor afia (valorile sunt naturale);
2

Pentru a se putea utiliza fonturi de tipuri diferite trebuie copiate n folderul n care se lucreaz fiierele cu extensia .chr din bp\bgi. Afiarea propriu-zis a textelor se realizeaz cu ajutorul procedurilor: OutText(ir); Execut tiprirea textului (ir) ncepnd cu poziia curent a cursorului. OutTextXY(x,y,ir) Execut tiprirea textului (ir) ncepnd de la coordonatele specificate x i z. Exemplu:
uses graph; var gd,gm:integer; begin gd:=detect; InitGraph(gd, gm,''); settextstyle(1,1,1); outtext('Text vertical mic'); settextstyle(2,0,4); outtext('Text orizontal mic'); settextstyle(3,0,1); outtextxy(100,100,'Text orizontal la 100,100'); settextstyle(4,1,1); outtextxy(50,50,'Text vertical la 50,50'); readln; closegraph; end.

3. Puncte i segmente Pentru a desena puncte pe ecran se va folosi procedura: PutPixel(x,y,culoare) Unde: x,y sunt coordonatele la care se va afia punctul de culoarea specificat. Pentru a muta cursorul pe ecran se vor utiliza procedurile: MoveTo(x,y) mut cursorul la coordonatele x,y; MoveRel(dx,dy) mut cursorul la coordonatele relative la poziia curent: adic dac acesta se afl la coordonatele x,y atunci va fi mutat la coordonatele x+dx,z+dy. Ca i n cazul textelor i la linii se poate stabili un stil de afiare folosind procedura: SetLineStyle(tip_linie, model, grosime) Unde: - parametrul tip_linie caracterizeaz tipul liniei, ntrerupt sau nu; (valorile sunt numerice ntre 0 i 4 sau SolidLn, DottedLn, CenterLn, DashedLn, UserBitLn (Userdefined line style) caz n care se completeaz parametrul model cu un numr hexazecimal) - parametrul grosime care poate fi: NormWidth sau valoarea 1, ThickWidth sau 3. Desenarea efectiv a liniilor se poate face apelnd trei proceduri:
3

4. Figuri geometrice drepte a. Desenarea dreptunghiurilor se realizeaz prin apelul procedurii Rectangle(x1,y1,x2,y2); Unde: x1, y1 reprezinta coordonata coltului din stanga sus a dreptunghiului iar X2, y2 reprezinta coordonata coltului din drepta jos a dreptunghiului. b. Desenarea liniilor frnte se realizeaz prin apelul procedurii: DrawPoly(n,vector_puncte) Unde: n este numrul de puncte care vor uni linia frnt; vector_puncte este un vector cu elemente de tip PointType in care se depun coordonatele punctelor de pe ecran prin care va trece linia franta (ca si in exemplul de mai jos); In cazul in care in vector prima pereche de coordonate coincide cu ultima atunci pe ecran se va desena un poligon.

5. Figuri geometrice curbe a. Desenarea cercurilor se realizeaz prin apelul procedurii: Circle(x,y,raz); Unde: x, y reprezinta coordonatele de pe ecran pentru centrul cercului, iar raza reprezinta raza cercului care va fi desenat. b.Desenarea arcelor de cerc se realizeaz prin apelul procedurii: Arc(x,y,unghi_iniial,unghi_final,raz); Unde: x, y reprezinta coordonatele de pe ecran pentru centrul arcului de cerc, unghi_iniial,unghi_final reprezinta masura unghiurilor (in grade) de start si final din cercul trigonometric raza reprezinta raza cercului din care face arcul de cerc. c. Desenarea arcelor de elips i a elipselor se realizeaz prin apelul procedurii: Ellipse(x,y, unghi_iniial,unghi_final,raz_x,raz_y). Unde: x, y reprezinta coordonatele de pe ecran pentru centrul elipsei sau arcului de elipsa, unghi_iniial,unghi_final reprezinta masura unghiurilor (in grade) de start si final din cercul trigonometric raza_x, raza_y reprezinta razele elipsei.

6. Figuri geometrice hasurate Procedurile care realizeaz desenul i haurarea sunt: 1)SetFillStyle se apeleaz prin SetFillStyle(model,culoare); 2)SetFillPattern dac se dorete o haur definit de utilizator.Se apeleaz prin SetFillPattern(model_pers,culoare); Procedurile care realizeaz desenarea contururilor figurilor cu culoarea i haura aleas sunt: 1)Bar deseneaz i haureaz un dreptunghi; se apeleaz prin Bar(x1,y1,x2,y2); 2)Bar3D pt paralelipiped prin Bar3D(x1,y1,x2,y2,adncime,capac); 3)FillPoly pt poligon prin FillPoly(n,vrf); 4)FillEllipse pt elips - prin FillEllipse(x,y,raz_x,raz_y); 5)Sector pt sector de elips - prin Sector(x, y, unghi_iniial, unghi_final, raz_x, raz_y);
4

6)PieSlice pt sector de cerc prin PieSlice(x, y, unghi_iniial, unghi_final, raz); 7)FloodFill prin FloodFill(x,y,culoare_margine).

B. Aplicaii grafice utile 1. Utilizarea mouse-lui 2. Meniuri grafice 3. Animaie

2.5. Desenarea segmentelor de dreapt 2.6. Schimbarea poziiei punctului curent 2.7. Desenarea liniilor frnte i a poligoanelor 2.8. Desenarea cercurilor, arcelor de cerc i de elips 2.9. Desenarea figurilor geometrice haurate
5

2.10. Raportul aspect exprim raportul dintre dimensiunea pe orizontal i aceea pe vertical a unui pixel i se poate cacula folosind procedura GetAspectRatio(numrtor,numitor). 2.11. Afiarea textelor 2.12. Ferestre de afiare O fereastr de afiare este o zon dreptunghiular n care se deseneaz procedurile apelate dupa executarea procedurii SetViewPort. Aceasta deschide o fereastr ce rmne activ pn la deschiderea unei noi ferestre. Coordonatele care apar n procedurile urmtoare procedurii SetViewPort sunt coordonate relative la fereastra deschis, iar coordonatele absolute se obin adunnd coordonatele originii ferestrei. 2.13. Tehnici de animaie Orice program de animaie trebuie s cuprind urmtorii pai: 1)afiarea corpului sau a figurii; 2)o pauz care s permit percepia imaginii afiate; 3)tergerea imaginii afiate la pasul 1; 4)modificarea poziiei corpului sau figurii. Tehnici de animaie:-pt tergerea figurii, se redeseneaz corpul cu culoarea fondului; -se apeleaz procedura SetWriteMode; -se utilizeaz procedurile GetImage i PutImage; -se utilizeaz procedurile de manipulare a paginilor video; Pagina asupra creia acioneaz la un moment dat procedurile grafice se numete pagin curent. Procedura SetVisualPage(pagin) stabilete pagina vizibil. Cele mai rapide tehnici de animaie sunt ultimele dou. 2.14. Reprezentarea grafic a suprafeelor Ecuaia unei suprafee este z=f(x,y). Pentru reprezentarea suprafeei se alege o reea de puncte, care se proiecteaz i se unesc prin segmente de dreapt.Proiecia este izometric, deoarece unitile de msur sunt aceleai pe cele trei axe: Ox, Oy, Oz. O suprafa poate fi dat i izometric. Desenarea suprafeelor exprimate parametric se realizeaz la fel ca i a celor date prin ecuaii carteziene, dar aspectul grafic este mai bun. 2.15. Curbe Bspline parabolice pentru realizarea desenelor Curbele Bspline parabolice sunt curbe exprimate parametric prin funcii foarte simple de gradul II.O astfel de curb aproximeaz o linie poligonal cu n vrfuri, care se numesc puncte de control ale curbei i nu aparin curbei. 2.16. Modificarea paletei de culori Exist posibilitatea modificrii paletei de culori n ntregime sau selectiv: 1)Procedura SetAllPalette(palet) modific toat paleta, iar imaginea de pe ecran I modific toate culorile conform noii palete; 2)Procedura SetPalette(indice,cod_culoare) modific numai valoarea din palet a crei indice este specificat la apel.

S-ar putea să vă placă și