...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 graficaProcedura de initializare automata DetectGraph are urmatoarea sintaxaDetectGraphVar driversgrafic,modsgraficintegerParametrii driversgrafic si modsgrafic au semnificatie identica cu cei folositi la InitGraph .Trecerea din modulul grafic in modul text se face prin CloseGraph, care descarca driverul grafic din memorie, elibereaza spatiul alocat si restaureza precedentul mod text.PROCEDURE CloseGraphTot pentru trecerea din modul grafic in modul text si invers se folosesc procedurile complementare RestoreCrtMode si SetGraphMode.PROCEDURE RestoreCrtMode PROCEDURE SetGraphModemodsgraficinteger RestoreCrtMode face trecerea in modul text fara eliberarea din memorie a driverului grafic, astfel la o trecere ulterioara din modul text in 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 in modul text anterior, se sterge ecranul, cursorul modului text anterior fiind pus in pozitia home linia 0, coloana 0, i.e. coltul stanga-sus. Astfel de manevre sunt necesare programelor care combina frecvent modul grafic cu cel text si mai ales cand aceste treceri nu trebuie sa ocupe un timp prea mare....IDetectie erori de initializareS ...I1S gE GraphResult ...I2S IF gE grOk THEN ...I3S BEGIN ...Iinitializarea nu a fost corectaS ......I4S RITELNeroare grafica, GraphErrorMsggE ......I5S halt1 ...I6S END ...I7S xmgetmaxxI rezolutie pe xS ...I8S ymgetmaxyI rezolutia pe yS ...I9S cmgetmaxcolorI numar de culori paletaS ...Idesenare dreptunghi cu dimensiunile ecranuluiS ...rectangle0,0,xm,ym ...IAfisare mesajS ...outtextxy20,ym DIV 2,Bun venit in lumea graficii ...ReadLn ...CloseGraph END. 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. In partea de declaratii se observa variabilele de tip intreg 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 in variabile globale a caracteristicilor modului grafic curent, adica rezolutia orizontala si verticala si numarul maxim de culori paleta. Urmeaza apoi trasarea dreptunghiului de incadrare maxima pe ecran, prin apelul la procedure Rectangle si afisarea mesajului dorit in modul grafic prin OutTextXY. Dupa ce toate operatiunile dorite in modul grafic s-au executat, modul grafic este oprit prin rutina CloseGraph, revenindu-se in modul text existent anterior i.e. inainte de deschiderea modului grafic. Rezultatele executiei programului X1 sunt prezentate in figura 1 Fig. 1 Ecran rezultat in urma executiei normale fara erori a programului X1a fost decupata zona complet neagra!Trecerea din mod text in mod grafic si invers Programul G4 este un exemplu de folosire al procedurilor RestoreCrtMode si SetGraphMode ce fac trecerea din modul grafic in modul text si invers. Se reaminteste faptul ca trecerea repetata in mod grafic prin aceasta metoda nu mai face apel la InitGraph, si deci consuma un timp mult mai mic.PROGRAM G4 ...IExemplu pentru RestoreCrtModeS USES Graph VAR gD,gM,gE Integer ...xm,ym,cmord BEGIN ...gD Detect ...InitGraphgD,gM, ...IDetectia erorilor de initializareS ...gE GraphResult ...IF gE grOk THEN ...BEGIN ......riteLneroare grafica, GraphErrorMsggE ......halt1 ...END ...xmgetmaxx I rezolutie dupa x S ...ymgetmaxy I rezolutia dupa y S ...cmgetmaxcolorI numar de culori paleta S ...outtextxy20,20,Modul Grafic.Apasati Enter ...readln ...RestoreCrtMode ...ritelnModul Text.Apasati Enter ...readln ...SetGraphModegm ...outtextInapoi in modul grafic.Pentru terminare,apasati Enter ...readln ...closegraph END IG4S. Ca si in exemplele anterioare, se trece in 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 neagraFig 2.dupa care programul comuta in modul text, prin apelul procedurii RestoreCrtMode in modul text se va afisa mesajulModul text. Apasati Enter Programul comuta inapoi in modul grafic, prin apelul procedurii SetGraphMode, si afiseaza mesajul Fig 3.In final, se trece in modul text, oprind modul grafic, prin apelul lui CloseGraph.Forme geometrice. Dreptunghiuri Avand 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 in desenarea diverselor forme geometrice elementare sau ceva mai complexe.Pentru desenarea de dreptunghiuri avem la dispozitie procedura Rectangle. Dreptungiul are coltul stanga sus la coordonatele x1,y1, iar coltul dreapta jos la coordonatele x2,y2. Sintaxa procedurii estePROCEDURE Rectanglex1,y1,x2,y2integer Un apel Rectangle0,0,100,100 nu va trasa intotdeauna ! un patrat cu latura de 100 de pixeli, deoarece dimensiunile unui pixel pe directia orizontala si verticala sunt in general diferite. Pentru trasarea unui patrat coordonatele se vor calcula luand in considerare factorul de forma aspect ratio.Procedura Bar coloreaza umple o zona dreptunghiulara de ecran determinata de coltul stanga sus prin coordonatele x1,y1 si de coltul dreapta jos prin coordonate x2,y2. Umplerea se va face cu un anumit model, utilizand o culoare stabilita despre modelul de umplere si culoarea asociata lui vom vorbi mai tarziu culoarea de umplere este diferita de cea de desenare linii !PROCEDURE Barx1,y1,x2,y2integer PROCEDURE Bar3Dx1,y1,x2,y2integer gr...
Download