Grafica in Turbo Pascal

Trimis la data: 2002-06-05 Materia: Informatica Nivel: Liceu Pagini: 9 Nota: / 10 Downloads: 12
Autor: Rebeca teny Dimensiune: 48kb Voturi: Tipul fisierelor: doc Acorda si tu o nota acestui referat: 1 2 3 4 5 6 7 8 9 10
vezi mai multe detalii vezi mai putine detalii
Raporteaza o eroare
Pentru a executa un program ce contine apeluri la subrutine grafice, primul pas consta în trecerea din mod text în mod grafic (operatie care se numeste si initializarea (pornirea) modului grafic).

Initializare grafica. Generalitati
Initializarea modului grafic se poate face prin apelul procedurii InitGraph. Prin aceasta procedura se pot identifica posibilitatile hardware disponibile pe calculator (i.e. adaptorul disponibil), dupa care se va rezerva memorie pentru a încarca driverul grafic potrivit, se vor initializa variabilele interne ce definesc conditiile de afisare în respectivul mod grafic, se va comuta echipamentul în acel mod grafic, se va sterge ecranul, apoi se va reveni în programul apelant, fixându-se valori corespunzatoare pentru driverul grafic si modul grafic.

Daca procedura este utilizata în modul descris mai sus, biblioteca Graph asigura detectarea celui mai bun mod grafic disponibil, adica cel cu cea mai mare rezolutie si cea mai mare paleta de culori.

Procedura nu poate executa o detectare corecta pentru toate standardele grafice existente. Astfel, modurile IBM 8514 si VESA nu pot fi detectate prin metoda mentionata, fiind necesare masuri în consecinta (fixarea "manuala" a modului grafic).Sintaxa procedurii de initializare a modului grafic este:
PROCEDURE InitGraph(var driver_grafic,mod_grafic: integer; cale:STRING)
Parametrii driver_grafic si mod_grafic sunt necesari pentru initializarea driverului si a modului graphic.Parametrul cale reprezinta un sir de caractere ce indica locul (directorul) unde se afla fisierele cu extensia .BGI si .CHR.

Sirul nul (‘’) indica discul si directorul curent.Initializarea modului grafic se poate face prin trei moduri diferite.
Primul si cel mai folosit mod de initializare este initializare prin autodetectare, adica prin folosirea constantei Detect, definita de biblioteca GRAPH. Functionarea acestui mod de pornire a modului grafic a fost evidentiata mai sus.

Cel de-al doilea mod de initializare este initializarea automata prin folosirea apelului procedurii DetectGraph.
Cel de-al treilea mod de initializare al modului grafic este initializarea manuala prin apelarea procedurii InitGraph cu parametrii corespunzator alesi. Initializarea manuala se face prin indicarea driverului si modului grafic corespunzator. Aceasta este o modalitate prin care se poate initializa driverul IBM8514.

Rutine ajutatoare pentru initializarea grafica
Procedura de initializare automata DetectGraph are urmatoarea sintaxa:
DetectGraph(Var driver_grafic,mod_grafic:integer)
Parametrii driver_grafic si mod_grafic au semnificatie identica cu cei folositi la InitGraph .

Trecerea din modulul grafic în modul text se face prin CloseGraph, care descarca driverul grafic din memorie, elibereaza spatiul alocat si restaureza precedentul mod text.

PROCEDURE CloseGraph;
Tot pentru trecerea din modul grafic în modul text si invers se folosesc procedurile complementare RestoreCrtMode si SetGraphMode.
PROCEDURE RestoreCrtMode;
PROCEDURE SetGraphMode(mod_grafic:integer);

RestoreCrtMode face trecerea în modul text fara eliberarea din memorie a driverului grafic, astfel la o trecere ulterioara din modul text în modul grafic secventa de potrivire a placii grafice cu tipul de monitor poate fi ocolita prin folosirea procedurii SetGraphMode.
Prin folosirea RestoreCrtMode se va trece în modul text anterior, se sterge ecranul, cursorul modului text anterior fiind pus în pozitia "home" (linia 0, coloana 0, i.e. coltul stânga-sus). Astfel de manevre sunt necesare programelor care combina frecvent modul grafic cu cel text si mai ales când aceste treceri nu trebuie sa ocupe un timp prea mare.

Exemplul prezentat este un program didactic care deseneaza un dreptunghi de dimensiune maxima a ecranului si afiseaza mesajul: "Bun venit in lumea graficii".

Pentru a putea dispune de functiile grafice, programul trebuie sa apeleze biblioteca GRAPH printr-o instructiune USES, imediat dupa antetul de program. În partea de declaratii se observa variabilele (de tip întreg) gD pentru driverul grafic, gM pentru modul grafic si gE pentru codul eventualelor erori survenite. Secventa de initializare prin autodetectie se bazeaza pe valoarea Detect, oferita ca parametru procedurii InitGraph.

Liniile 1-6 prezinta o secventa tipica de detectie si tratare a eventualelor erori de initializare grafica. Liniile 7-9 prezinta modul de preluare (în variabile globale) a caracteristicilor modului grafic curent, adica rezolutia (orizontala si verticala) si numarul maxim de culori (paleta). Urmeaza apoi trasarea dreptunghiului de încadrare maxima pe ecran, prin apelul la procedure Rectangle si afisarea mesajului dorit în modul grafic prin OutTextXY. Dupa ce toate operatiunile dorite în modul grafic s-au executat, modul grafic este oprit prin rutina CloseGraph, revenindu-se în modul text existent anterior (i.e. înainte de deschiderea modului grafic). Rezultatele executiei programului X1 sunt prezentate în figura 1

Programul G4 este un exemplu de folosire al procedurilor RestoreCrtMode si SetGraphMode ce fac trecerea din modul grafic în modul text si invers. Se reaminteste faptul ca trecerea (repetata) în mod grafic prin aceasta metoda nu mai face apel la InitGraph, si deci consuma un timp mult mai mic.PROGRAM G4;

Ca si în exemplele anterioare, se trece în modul grafic prin folosirea initializarii cu autodetectie. Dupa tratarea eventualelor erori de initializare a modului grafic, se determina rezolutia ecranului si numarul maxim de culori.
Se va afisa mesajul (s-a decupat zona complet neagra):dupa care programul comuta în modul text, prin apelul procedurii RestoreCrtMode; în modul text se va afisa mesajul:Modul text. Apasati Programul comuta înapoi în modul grafic, prin apelul procedurii SetGraphMode, si afiseaza mesajul:În final, se trece în modul text, oprind modul grafic, prin apelul lui CloseGraph.


Forme geometrice. Dreptunghiuri.Având controlul asupra oricarui pixel de pe ecran si posibilitatea de a trasa linii, desenarea de forme geometrice devine o problema relativ simpla. Totusi, biblioteca GRAPH furnizeaza rutine specializate în desenarea diverselor forme geometrice (elementare sau ceva mai complexe).

Pentru desenarea de dreptunghiuri avem la dispozitie procedura Rectangle. Dreptungiul are coltul stânga sus la coordonatele (x1,y1), iar coltul dreapta jos la coordonatele (x2,y2). Sintaxa procedurii este:
PROCEDURE Rectangle(x1,y1,x2,y2:integer );

Un apel Rectangle(0,0,100,100) nu va trasa (întotdeauna !) un patrat cu latura de 100 de pixeli, deoarece dimensiunile unui pixel pe directia orizontala si verticala sunt în general diferite. Pentru trasarea unui patrat coordonatele se vor calcula luând în considerare factorul de forma (aspect ratio).

Procedura Bar coloreaza ("umple") o zona dreptunghiulara de ecran determinata de coltul stânga sus prin coordonatele (x1,y1) si de coltul dreapta jos prin coordonate (x2,y2). "Umplerea" se va face cu un anumit model, utilizând o culoare stabilita (despre modelul de umplere si culoarea asociata lui vom vorbi mai târziu; culoarea de umplere este diferita de cea de desenare linii !)
PROCEDURE Bar(x1,y1,x2,y2:integer) ;

PROCEDURE Bar3D(x1,y1,x2,y2:integer; grosime:word;top:boolean);
Procedura Bar3D creeaza un (pseudo)efect tridimensional, prin trasarea în perspectiva a unui paralelipiped. Parametrii x1,y1 reprezinta coordonatele coltului din stânga sus, iar x2,y2 coordonatele coltului din dreapta jos. Parametrul grosime este o valoare ce controleaza iluzia de adâncime (tridimensionala), prin trasarea unor linii suplimentare în partea superioara si lateral-dreapta a figurii.

Parametrul de tip boolean este cel care inhiba (valoarea false sau constanta predefinita TopOn) sau activeaza (valoarea true sau constanta predefinita TopOff) trasarea conturului suplimentar amintit anterior (cel din partea superioara).

Colorarea (umplerea) figurii se face cu un model si o culoare fixate prin intermediul procedurilor SetFillStyle (si, în cazuri speciale, SetFillPattern).
Exemplu: Programul X2 ilustreaza folosirea procedurii Bar3D, experimentând parametrul top cu cele doua valori permise .

Cercuri si arce de cerc

Rutina din biblioteca GRAPH dedicata desenarii arcelor de cerc este ARC, cu:
PROCEDURE Arc(x,y:integer;unghi_inceput,unghi_sfarsit,raza:word);
Parametrii procedurii Arc au semni ficatia (vezi si figura 11.16):
parametrii x,y reprezinta coordonatele centrului cercului caruia îi apartine arcul respectiv, cerc a carui raza este data de valoarea parametrului raza;
parametrii unghi_început si unghi_sfârsit reprezinta unghiu-rile (masurate în grade) de la care se începe si la care se sfârseste trasarea arcului de cerc; unghiurile sunt masurate în sens trigonometric (sensul invers sensului de rotatie al acelor ceasornicului).

Folosind formulele cunoscute din geometria analitica, se pot trasa arce de cerc si cercuri având la dispozitie numai rutinele de trasare linii sau pe cele de afisare a unui pixel ...

  • pag. 1
  • pag. 2
  • pag. 3
  • pag. 4
  • pag. 5
  • pag. 6
  • pag. 7
  • pag. 8
  • pag. 9

Nota explicativa
Referatele si lucrarile oferite de Referate.ro au scop educativ si orientativ pentru cercetare academica.

Iti recomandam ca referatele pe care le downloadezi de pe site sa le utilizezi doar ca sursa de inspiratie sau ca resurse educationale pentru conceperea unui referat nou, propriu si original.

Referat.ro te invata cum sa faci o lucrare de nota 10!
Filmele zilei
Linkuri utile
Programeaza-te online la salonul favorit Descarca gratuit aplicatiile pentru iOS si Android Filmulete haioase Filme, poante si cele mai tari faze Jocuri Cele mai tari jocuri de pe net Referate scoala Resurse, lucrari, referate materiale pentru lucrari de nota 10 Bacalaureat 2019 Vezi subiectele examenului de Bacalaureat din 2019 Evaluare Nationala 2019 Ultimele informatii despre evaluare nationala
Toate imaginile, textele sau alte materiale prezentate pe site sunt proprietatea referat.ro fiind interzisa reproducerea integrala sau partiala a continutului acestui site pe alte siteuri sau in orice alta forma fara acordul scris al referat.ro. Va rugam sa consultati Termenii si conditiile de utilizare a site-ului. Informati-va despre Politica de confidentialitate. Daca aveti intrebari sau sugestii care pot ajuta la dezvoltarea site-ului va rugam sa ne scrieti la adresa webmaster@referat.ro.
Confidentialitatea ta este importanta pentru noi

Referat.ro utilizeaza fisiere de tip cookie pentru a personaliza si imbunatati experienta ta pe Website-ul nostru. Te informam ca ne-am actualizat politica de confidentialitate pentru a integra cele mai recente modificari privind protectia persoanelor fizice in ceea ce priveste prelucrarea datelor cu caracter personal. Inainte de a continua navigarea pe Website-ul nostru te rugam sa aloci timpul necesar pentru a citi si intelege continutul Politicii de Cookie. Prin continuarea navigarii pe Website-ul nostru confirmi acceptarea utilizarii fisierelor de tip cookie conform Politicii de Cookie. Nu uita totusi ca poti modifica in orice moment setarile acestor fisiere cookie urmarind instructiunile din Politica de Cookie.


Politica de Cookie
Am inteles