Sunteți pe pagina 1din 17

Capitolul 13 Funcii video C

Un program care beneficiaz[ de o interfa\ [ prietenoas[ cu utilizatorul, are =anse mai mari s[ fie cump[rat, fa\[ de un program care ignor[ acest <detaliu> foarte important azi. De asemenea, prezentarea rezultatelor numerice ]nso\ite de grafice, tabele, histograme desene etc., reprezint[ o modalitate de informare mai atractiv[ =i eficient[ a utilizatorului. at[ de ce, calitatea interfe\ei progam!utilizator este, al[turi de timpul de e"ecu\ie =i necesarul de memorie, unul din indicatorii principali prin care se poate aprecia un program. #ontrolul complet asupra ecranului se realizeaz[ cu a$utorul unor func\ii speciale, numite de obicei func\ii video. Din cauza diferen\elor e"istente ] ntre diferite tipuri de calculatoare, standardul %&' # nu define=te astfel de func\ii. (otu=i, \in)nd cont de importan\a lor deosebit[, prezent[m ]n aceast[ sec\iune, pentru familiarizare, c)teva func\ii video furnizate de *orland (urbo # ++ pentru calculatoare *+ ,# =i compatibile, echipate cu adaptoare grafice sub sistemul de operare D-'. .volu\ia adaptoarelor video sau interfe\elor grafice, este marcat[ de dorin\a de a ob\ine pe ecran reprezent[ri la nivelul calit[\ii fotografice. %daptoarele video con\in memorie /%+ video, cu a$utorul c[reia se realizeaz[ re]mprosp[tarea continu[ a imaginii de pe videomonitor =i logica necesar[ gener[rii semnalelor de comand[ pentru func\ionarea videomonitorului. .le implementeaz[ cele dou[ moduri de lucru0 grafic =i text. %daptorul +D% 1+onochrome Displa2 %dapter3 permite numai afi=are ]n mod te"t. %lte tipuri de adaptoare video 1]n ordinea apari\iei lor3 sunt0 4ercules +onochrome 5raphics %dapter, #5% 1#olor 5raphics %dapter3, .5% 1.nhanced 5raphics %dapter3, 65% 16ideo 5raphics %rra2 %dapter3. .le permit afi=area ]n mod te"t =i ]n mod grafic. #ele dou[ moduri de lucru nu sunt active simultan.

Capitolul 13 Funcii video C

7n modul text fiecare caracter de pe monitor este reprezentat ]n memoria video prin doi octe\i0 primul octet con\ine codul %'# al caracterului, iar al doilea atributele de afi=are. 'tructura octetului care codific[ atributele de afi=are este urm[toarea0 * 8 8 8 # # # # unde0 #### reprezint[ codul culorii caracterului9 888 reprezint[ codul culorii fondului9 * indic[ afi=are continu[ 1 valoarea 03 sau intermitent[ 1valoarea 13. .cranul este privit ca o re\ea celular[, fiecare celul[ put)nd memora un caracter. -riginea re\elei este ]n col\ul din st)nga sus =i are coordonatele 1 1,13. #oordonata x cre=te de la st)nga spre dreapta, iar coordonta y cre=te de sus ]n $os ]n planul ecranului. 7n modul grafic ecranul este v[zut ca o re\ea foarte fin[ de puncte numite pixeli. ,i"elul este cea mai mic[ zon[ ce poate fi <aprins[> pe ecran. #uloarea unui pi"el este reprezentat[ printr!un num[r de bi\i ]n memoria video. %stfel, imaginea afi=at[ este construit[ punct cu punct ]n memoria video. -riginea se afl[ ]n col\ul din st)nga sus =i are coordonatele 1 0,03. #oordonatele x =i y cresc =i descresc asem[n[tor ca ]n modul te"t.

Capitolul 13 Funcii video C

10

%daptoarele video sunt caracterizate prin rezolu\ie spa\ial[ =i rezolu\ie de culoare . /ezolu\ia spa\ial[ ]n modul te"t se refer[ la num[r de r)nduri =i num[r de coloane, iar ]n modul grafic ]nseamn[ num[r de linii =i num[r de pi"eli pe linie. /ezolu\ia de culoare are ]n vedere num[rul de culori afi=abile simultan. :in)nd cont de simplitatea modului de reprezentare, modul te"t se caracterizeaz[ prin vitez[ mare de afi=are =i necesar de memorie mic. .ste evident ]ns[ c[ afi=area ]n mod te"t nu permite reprezent[ri pe ecran de mare fine\e. Din acest punct de vedere modul grafic este ideal. ,re\ul pl[tit const[ ] ntr!un necesar mare de memorie =i vitez[ de afi=are redus[. %mbele probleme au fost ]ns[ rezolvate cu succes, iar tendin\a este de a ]nlocui definitiv modul te"t cu modul grafic. %t)t ]n modul te"t c)t =i ]n modul grafic e"ist[ posibilitatea de a preciza zone dreptunghiulare de ecran ]n care se pot afi=a te"te, imagini grafice, ]n timp ce restul ecranului r[m)ne nemodificat. %ceste zone, active la un moment dat, se numesc ferestre. Definirea unei ferestre se face cu a$utorul unor func\ii speciale care precizeaz[ coordonatele col\ului st)nga sus =i a col\ului dreapta $os pentru fereastra respectiv[. - dat[ definit[ fereastra, coordonatele folosite de celelalte func\ii video vor fi relative la aceast[ fereastr[. &oua origine va fi situat[ ]n col\ul din st)nga sus a ferestrei, iar coordonatele x =i y relative, la fereastra activ[, cresc sau descresc asem[n[tor cu situa\ia ]n care este activat tot ecranul. De altfel, fereastra implicit[ pentru ambele moduri este tot ecranul. UNC|II VIDE !N " DU# $E%$

8unc\iile video ]n modul te"t au prototipul ]n conio.h =i se ]mpart ]n urm[toarele categorii0

Capitolul 13 Funcii video C

11

8unc\ii pentru 8unc\ii pentru ferestrelor9 8unc\ii pentru 8unc\ii pentru

stabilirea modului9 definirea =i gestionarea controlul atributului9 afi=area =i modificarea te"tului.

UNC|II &EN$'U ($)*I#I'E) " DU#UI


void textmode(int mod);

unde mod poate lua una din valorile BW40 140 coloane alb! negru3, C40 140 coloane color3, BW80 180 coloane alb! negru3, C80 180 coloane color3, MO O 180 coloane monocrom3, !"#$MO%& 1modul precedent3. 6alorile BW40, C40, BW80, C80, MO O, !"#$MO%& pot fi ]nlocuite cu 0, 1, ', (, ) respectiv *1. UNC|II &EN$'U DE+INI'E) ,I -E($I N)'E) +E'E($'E# ' +UNC|II &EN$'U DE+INI'E) +E'E($'E# '
void +indo+(int x1, int y1, int x', int y');

define=te o fereastr[ cu col\ul st)nga!sus ]n punctul de coordonate 1x1, y13 =i cu col\ul dreapta!$os ]n punctul de coordonate 1x', y'3. +UNC|II &EN$'U -E($I N)'E) +E'E($'E# '
void ,ettextin-o(.tr/ct text0in-o 12tr);

completeaz[ o structur[ de tip text0in-o, con\inut[ ]n conio.h, cu informa\ii despre fereastr[. 'tructura con\ine coordonatele col\urilor st)nga!sus, dreapta!$os,

Capitolul 13 Funcii video C

12

atributul curent, modul te"t curent, dimensiunile ecranului, pozi\ia curent[ a cursorului =i se afl[ la adresa indicat[ de 2tr.
void ,otoxy(int x, int y);

pozi\ioneaz[ cursorul, ]n fereastra activ[, ]n punctul de coordonate 1x,y3.


int +herex(void);

]ntoarce coordonata x a pozi\iei curente a cursorului.


int +herey(void);

]ntoarce coordonata y a pozi\iei curente a cursorului. UNC|II &EN$'U C N$' #U# )$'I*U$U#UI
void textattr(int atri3/t);

modific[ valorile atributului 1culoare caracter, culoare fond, caracterul continuu sau intermitent al afi=[rii3 printr!un singur apel.
void text3ac4,ro/nd(int c/loare);

seteaz[ culoarea fondului pe care apar caracterele. 6alorile posibile sunt0 *;%#<, *;U., 5/..&, #=%&, /.D, +%5.&(%, */->&, ; 54(5/%= sau 1,',(,4,5,6, care ]nlocuiesc corespunz[tor constantele simbolice enumerate.
void textcolor(int c/loare);

seteaz[ culoarea caracterelor. 6alorile posibile pentru c/loare sunt cele listate la func\ia text3ac4,ro/nd() la care se adaug[0 D%/<5/%=, ; 54(*;U., ; 54(5/..&, ; 54(#=%&, ; 54(/.D, ; 54(+%5.&(%, =.;;->, >4 (. sau 8,7,10,11,1',1(,14,15, care ]nlocuiesc corespunz[tor constantele simbolice enumerate.
void hi,hvideo(void);

are ca efect afi=area cu intensitate sporit[ a caracterelor.

Capitolul 13 Funcii video C

13

void lo+video(void);

are ca efect afi=area cu intensitate redus[ a caracterelor.


void normvideo(void);

are ca efect afi=area caracterelor cu intensitatea e"istent[ la intrarea ]n e"ecu\ie a programului. UNC|II &EN$'U )+I,)'E) ,I " DI+IC)'E) $E%$U#UI
int c2rint-();

afi=eaz[ un te"t formatat pe ecran, ]n fereastra curent[. .ste asem[n[toare cu func\ia 2rint-().
int c2/t.(con.t char 1.ir);

afi=eaz[ =irul .ir ]n fereastra curent[, ]ntorc)nd ultimul caracter afi=at.


int ,etch(void); int ,etche(void); int 2/tch(int c);

au efectul prezentat la func\iile cu acelea=i sume din standardul %&' #.


int ,ettext(int x1,int y1,int x',int y', void 1ta3lo/0de.t);

copiaz[ un te"t cuprins ]n zona desemnat[ de col\ul st)nga!sus de coordonate 1 x1,y13 =i col\ul dreapta!$os de coordonate 1x',y?3 ]n zona de memorie ta3lo/0de.t. 7ntoarce 0 dac[ opera\ia nu a avut succes =i diferit de 0 ]n caz contrar.
int 2/ttext(int x1,int y1,int x',int y', void 1ta3lo/0./r.a);

afi=eaz[ con\inutul tabloului ta3lo/0./r.a ]n zona de ecran definit[ de col\ul st)nga!sus de coordonate 1x1,y13 =i col\ul dreapta!$os de coordonate 1 x',y'3.

Capitolul 13 Funcii video C

14

void clreol(void);

=terge caracterele de la pozi\ia curent[ a cursorului p)n[ la sf)r=itul liniei.


void clr.cr(void);

=terge fereastra curent[ =i pozi\ioneaz[ cursorul ]n originea 11,13.


void delline(void);

=terge linia pe care se afl[ cursorul.


void in.line(void);

insereaz[ o linie goal[ sub linia pe care se afl[ cursorul.


int movetext(int x1,int y1,int x',int y', int x, int y);

copiaz[ con\inutul din zona definit[ de col\ul din st)nga! sus de coordonate 1x1,y13 =i col\ul din dreapta!$os de coordonate 1x',y'3, ]n zona de aceea=i dimensiune care are col\ul din st)nga!sus de coordonate 1 x,y3. UNC|II VIDE &EN$'U " DU# -')+IC

;imba$ul (urbo #88 are peste @A func\ii video ce pot fi folosite ]n modul grafic 1pe scurt, func\ii grafice3 care se g[sesc grupate ]n biblioteca grafic[ ,ra2hic..li3. 8olosirea lor necesit[ includerea fi=ierului header ,ra2hic..h. -pera\ia de linBeditare nu include implicit 1ca ]n cazul bibliotecii standard3 module obiect din biblioteca ,ra2hic..li3. Din acest motiv, dac[ se lucreaz[ sub un mediu integrat trebuie bifat[ caseta 5raphics ;ibrar2 din meniul -ptionC;inBer. Dac[ se lucreaz[ ]n mod comand[ trebuie folosit[ o comand[ de forma
tcc n/me02ro,ram ,ra2hic..li3

(recerea ]n modul grafic nu este posibil[ f[r[ ] nc[rcarea ]n memorie a unor rutine speciale destinate adaptorului video prezent, numite =i drivere.

Capitolul 13 Funcii video C

15

,rezent[m mai $os c)teva din func\iile grafice, cele mai utile, grupate astfel0

8unc\ii pentru 8unc\ii pentru ferestrelor 9 8unc\ii pentru pi"elilor9 8unc\ii pentru 8unc\ii pentru 8unc\ii pentru

controlul sistemului grafic9 controlul ecranului =i al manevrarea imaginilor =i a afi=area te"telor ]n modul grafic9 controlul culorii9 desenare =i umplere.

8unc\iile din ,ra2hic..li3 sunt func\ii far, iar pointerii manipula\i de ele sunt de tip far 1far este un modificator de adres[ utilizat pentru a referi adrese situate ]n afara zonei de date de DE <o3. UNC|II &EN$'U C N$' #U# (I($E"U#UI -')+IC
void -ar clo.e,ra2h(void);

]nchide sistemul grafic, elibereaz[ memoria alocat[ la ] nc[rcarea driverului =i revine la modul te"t e"istent anterior apelului func\iei init,ra2h().
void -ar detect,ra2h(int -ar 1,rdriver, int -ar 1,mode);

]ntoarce ]n ,rdriver num[rul asociat driverului, iar ,mode va indica modul cu rezolu\ie ma"im[ pentru adaptorul =i driverul e"istent.
char 1-ar ,etdrivername(void);

]ntoarce numele driverului ]nc[rcat.


int -or ,etmaxx(void); int -ar ,etmaxy(void);

]ntorc num[rul ma"im de pi"eli pe orizontal[ =i pe vertical[ 1rezolu\ia spa\ial[ curent[3.


char 1-ar ,ra2herrorm.,(int cod0eroare);

]ntoarce adresa mesa$ului asociat codului de eroare.

Capitolul 13 Funcii video C

16

int -ar ,ra2hre./lt(void);

]ntoarce codul erorii rezultat din e"ecu\ia unei func\ii grafice.


void -ar init,ra2h(int -ar 1,rdriver, int -ar 1,mode, char -ar 1cale);

ini\ializeaz[ sistemul grafic. ,arametrul cale reprezint[ un =ir de caractere prin care se precizeaz[ calea de c[utare a fi=ierului care con\ine driver/l. Dac[ =irul este vid, c[utarea se face ]n driver/l curent.
void -ar .et,ra2hmode(int ,mode);

seteaz[ un nou mod grafic pentru driver/l instalat, =terge ecranul =i restaureaz[ toate valorile implicite.
void -ar re.torecrtmode(void);

restabile=te modul video e"istent anterior apelului func\iei init,ra2h() f[r[ a ]nchide sistemul grafic. UNC|II &EN$'U C N$' #U# EC')NU#UI. ")NEV')'E) I")-INI# ' ,I ) &I%E#I# ' C N$' #U# EC')NU#UI
void -ar cleardevice(void);

=terge tot ecranul =i aduce cursorul ]n pozi\ia 1 0,03.


void -ar clearvie+2ort();

=terge fereastra curent[ =i aduce cursorul ]n pozi\ia 10,03.


void -ar ,etvie+.ettin,.(.tr/ct vie+2ortty2e -ar 1vie+2ort);

determin[ dimensiunile ferestrei curente. nforma\iile sunt date de structura vie+2ortty2e declarat[ ]n fi=ierul ,ra2hic..h =i are forma0

Capitolul 13 Funcii video C

17

.tr/ct vie+2ortty2e 9 int le-t,to2,ri,ht,3ottom; int cli2; :; void -ar .etactive2a,e(int 2a,);

specific[ pagina activ[ pentru ie=iri grafice 1pot fi p)n[ la opt pagini, parametrul 2a, put)nd lua una din valorile 0,1,...)3.
void -ar .etvie+2ort(int x1, int y1, int x', int y', int cli2);

define=te o fereastr[ cu col\ul st)nga!sus, ]n punctul de coordonate 1x1,y13 =i col\ul dreapta!$os, ]n punctul de coordonate 1x',y'3. Dac[ cli2 are o valoare diferit[ de 0, desenele care dep[=esc fereastra sunt trunchiate, ]n caz contrar nu.
void -ar .etvi./al2a,e(int 2a,);

specific[ pagina care va fi vizualizat[ pe ecran. ")NEV')'E) I")-INI# '


void -ar ,etima,e(int x1, int y1, int x', int y', void -ar 13/-);

copiaz[ zona de memorie video corespunz[toare zonei dreptunghiulare de pe ecran determinat[ de coordonatele 1x1,y13, 1x',y'3 ]n tabloul 3/-.
/n.i,ned -ar ima,e.i;e(int x1,int y1,int x',int y');

]ntoarce num[rul de octe\i necesari pentru memorarea imaginii dreptunghiulare de pe ecran determinat[ de coordonatele 1x1,y13, 1x',y'3.
void -ar 2/tima,e(int x1,int y1,void -ar 13/-, int o2erator);

afi=eaz[ pe ecran, ]ntr!o zon[ dreptunghiular[, av)nd col\ul din dreapta sus ]n punctul de coordonate 1 x1,y13, imaginea memorat[ ]n 3/-, afectat[ ]ns[ de o2erator. -peratorul poate lua valorile CO<=0<>$ 1copiere simpl[3,

Capitolul 13 Funcii video C

18

?O@0<>$ 1#"> e"clusiv ]ntre imagini3, O@0<>$ 1#"> ]ntre imagini3, " %0<>$ 1#A ]ntre imagini3, O$0<>$ 1negativul

imaginii3. #onstantele simbolice pot fi ]nlocuite cu valorile numerice 0,1,',( respectiv 4. -peratorii ?O@0<>$, O@0<>$ =i " %0<>$ se refer[ la opera\iile bit cu bit, corespunz[toare, dintre imaginea e"istent[ pe ecran =i imaginea memorat[ ]n 3/-, iar O$0<>$ se refer[ la negarea bit cu bit a imaginii de pe ecran3. ")NEV')'E) &I%E#I# '
/n.i,ned -ar ,et2ixel(int x,int y);

]ntoarce culoarea pi"elului aflat ]n pozi\ia 1 x,y3.


void -ar 2/t2ixel(int x,int y,int c/loare);

afi=eaz[ pe ecran pi"elul de coordonate 1 x,y3 de culoarea dat[ de parametrul culoare. UNC|II &EN$'U )+I,)'E) $E%$E# ' !N " DU# -')+IC
void -or ,ettext.ettin,.(.tr/ct text.ettin,.ty2e -ar 1textin-o);

permite ob\inerea unor informa\ii despre fontul curent, direc\ie, m[rime, aliniere prin intermediul pointerului textin-o care indic[ o structur[ de forma0
.tr/ct text.ettin,.ty2e 9 int -ont; int direction; int char.i;e; int hori;; int vert; :; void -ar o/ttext(char -ar 1text);

afi=eaz[ text ]n pozi\ia punctului curent.

Capitolul 13 Funcii video C

19

void -ar o/ttextxy(int x, int y, char -ar 1text);

afi=eaz[ text ]n pozi\ia dat[ de 1x,y3.


void -ar .ettin,.B/.ti-y(int ori;, int vert);

aliniaz[ te"tul relativ la pozi\ia curent[. mplicit alinierea orizontal[ este la st)nga te"tului, iar cea vertical[ la baza te"tului. 'unt urm[toarele posibilit[\i0 orizontal
!&C$0$&?$ (0) punct curent la st)nga te"tului C& $&@0$&?$ (1) punct curent ]n centrul te"tului @ADE$0$&?$ (') punct curent la dreapta te"tului

vertical
BO$$OM0$&?$ (0) punct curent la baza te"tului C& $&@0$&?$ (1) punct curent ]n centrul te"tului $O<0$&?$ (') punct curent deasupra te"tului

6alorile 0,1,' din paranteze reprezint[ alternative la folosirea constantelor simbolice.


void -ar .ettin,..tyle(int -ont, int directie, int marime);

precizeaz[ fontul, direc\ia 1orizontal[ sau vertical[3 =i m[rimea caracterelor care compun te"tul.
int -ar texthei,ht(char -ar 1text); int -ar text+idth(char -ar 1text);

]ntorc ]n[l\imea, respectiv lungimea m[surat[ ]n pi"eli pentru text. UNC|II &EN$'U C N$' #U# CU# 'II
int -ar ,et34color(void);

]ntoarce culoarea curent[ a fondului.


int -ar ,etcolor(void);

]ntoarce culoarea curent[ de desenare.


int -ar ,etmaxcolor(void);

Capitolul 13 Funcii video C

20

]ntoarce inde"ul ultimului element din palet[ reprezent)nd o culoare ]n modul grafic curent.
void -ar ,et2alette(.tr/ct 2alettety2e 1-ar 2aleta);

]ntoarce paleta curent[ =i dimensiunea ei prin intermediul pointerului 2aleta c[tre o structur[ de forma0
.tr/ct 2alettety2e 9 /n.i,ned char dimen.02aleta; .i,ned char color.F16G; :; void -ar .etall2alette(.tr/ct 2alettety2e -ar 12aleta);

schimb[ toat[ paleta.


int -ar .et34color(int c/loare0no/a);

schimb[ culoarea fondului ]n c/loarea0no/a.


void -ar .etcolor(int c/loare0no/a);

seteaz[ culoarea curent[ de desenare drept c/loare0no/a.


void -ar .et2alette(int index, int c/loare);

arat[ pozi\ia din palet[ unde se seteaz[ culoarea c/loare. UNC|II &EN$'U DE(EN)'E ,I U"&#E'E +UNC|II &EN$'U DE(EN)'E
void -ar arc(int x, int y, int /n,hi0ince2/t, int /n,hi0.-ar.it, int ra;a);

Capitolul 13 Funcii video C

21

deseneaz[ un arc de cerc de raz[ ra;a, ]ncep)nd cu /n,hi*ince2/t =i termin)nd cu /n,hi*.-ar.it. #ele dou[ unghiuri pot lua valori ]ntre 0 =i (60 grade. #)nd /n,hi*ince2/t este 0, iar /n,hi*.-ar.it (60 grade se ob\ine un cerc.
void -ar circle(int x, int y, int ra;a);

deseneaz[ un cerc de raz[ ra;a =i centru 1x,y3.


void -ar dra+2oly(int nr, int -ar 1ta30coord);

deseneaz[ o linie fr)nt[ care trece prin nr puncte ale c[ror coordonate se afl[ ]n tabelul ta30coord de forma0
ta30coordFnrGF'G;

'e une=te punctul de coordonate 1 ta30coordF0G F0G,ta30coordF0GF1G3 cu punctul de coordonate ta30coordF1GF0G,ta30coordF1GF1G =.a.m.d..
void -ar ,eta.2ectratio(int -ar 1xa.2ect, int -ar 1ya.2ect);

permite ob\inerea valorilor pentru parametrii xa.2ect =i ya.2ect. %ceste valori folosesc la corecta dimensionare a desenelor, care, ]n mod normal ies deformate din cauza diferen\ei 1]nt)lnite la ma$oritatea adaptoarelor3 ]ntre lungimea =i l[\imea unui pi"el.
void -ar ,etline.ettin,.(.tr/ct line.ettin,.ty2e -ar 1in-0line);

ofer[ informa\ii despre stilul, modelul =i lungimea liniei prin intermediul pointerului in-0line. %cest pointer arat[ c[tre structura line.ettin,.ty2e declarat[ ]n ,ra2hic..h.
int -ar ,etx(void); int -ar ,ety(void);

]ntorc coordonatele 1x,y3 ale punctului curent.


void -ar line(int x1, int y1, int x', int y');

deseneaz[ o linie din punctul de coordonate 1 x1,y13 ]n punctul de coordonate 1x',y'3.


void -ar linerel(int dx, int dy);

Capitolul 13 Funcii video C

22

deseneaz[ o linie ]ntre punctul curent de coordonate 1x,y3 =i punctul de coordonate 1 x8dx,y8dy3.
void -ar lineto(int x, int y);

deseneaz[ o linie ]ntre punctul curent =i punctul de coordonate 1x,y3.


void -ar moverel(int dx, int dy);

mut[ pozi\ia curent[ din punctul de coordonate 1 x,y3 ]n punctul de coordonate 1x8dx,y8dy3.
void -ar moveto(int x, int y);

mut[ pozi\ia punctului curent ]n punctul de coordonate 1x,y3.


void -ar rectan,le(int x1, int y1, int x', int y');

deseneaz[ un dreptunghi cu col\ul din st)nga!sus ]n punctul de coordonate 1x1,y13 =i col\ul din dreapta! $os ]n punctul de coordonate 1 x',y'3.
void -ar .etline.tyle(int .til, /n.i,ned model, int ,ro.ime);

seteaz[ stilul =i grosimea liniei. ,arametrul .til poate lua una din valorile 0,1,',(,4 sau corespunz[tor constantele simbolice0 #O!A%0!A & 1linie continu[3, %O$$&%0!A & 1linie punctat[3, C& $&@0!A & 1linie centrat[3, %"#E&%0!A & 1linie ]ntrerupt[3, >#&@BA$0!A & 1linie definit[ de utilizator3. Dac[ stilul este >#&@BA$0!A & trebuie dat modelul utilizatorului ]n parametrul model, sub forma unui cod pe 16 bi\i. ,arametrul ,ro.ime poate lua ' valori0 O@M0WA%$E 1sau 13 =i $EACH0WA%$E 1sau (3 pentru 1 pi"el l[\ime respectiv ( pi"eli l[\ime.

Capitolul 13 Funcii video C

23

+UNC|II &EN$'U U"&#E'E


void -ar 3ar(int x1, int y1, int x', int y');

deseneaz[ =i umple o bar[ delimitat[ de punctul 1 x1,y13 st)nga!sus =i 1x',y'3 dreapta!$os.


void -ar 3ar(d(int x1, int y1, int x', int y', int adancime, int ca2ac);

deseneaz[ =i umple o bar[ tridimensional[ delimitat[ de punctul 1x1,y13 st)nga!sus, 1x',y'3 dreapta!$os =i av)nd adancime pi"eli. Dac[ ca2ac are valoarea 0 se deseneaz[ =i >capacul> barei, iar ]n caz contrar nu. Ultima variant[ permite plasarea ]n >stiv[> a mai multor bare.
void -ar -illelli2.e(int x,int y, int ra;ax, int ra;ay);

deseneaz[ =i umple o elips[ de centru 1 x,y3 =i raze ra;ax =i ra;ay.


void -ar -ill2oly(int nr, int -ar 1ta30coord02oli,on);

deseneaz[ =i umple un poligon ale c[rui v)rfuri au coordonatele ]n punctele tabloului ta30coord02oli,on.
void -ar -lood-ill(int x,int y, int c/loare0cont/r);

umple suprafa\a care con\ine punctul 1 x,y3 =i este m[rginit[ de un contur de culoare, c/loare0cont/r.
void -ar ,et-ill.ettin,.(.tr/ct -ill.ettin,.ty2e, -ar 1-ilin-o);

ofer[ informa\ii despre modelul curent de umplere =i culoarea de umplere. 'tructura -ille.ettin,.ty2e este declarat[ ]n ,ra2hic..h =i are forma0
.tr/ct -ill.ettin,.ty2e 9 int 2atern; int color; :; void -ar 2ie.lice(int x, int y, int /n,hi0ince2/t, int /n,hi0.-ar.it, int ra;a);

Capitolul 13 Funcii video C

24

deseneaz[ =i umple un sector de cerc de centru 1 x,y3, raz[ ra;a, delimitat de /n,hi0ince2/t =i /n,hi0.-ar.it.
void -ar .ector(int x,int y, int ra;a0x, int ra;a0y, int /n,hi0ince2/t, int /n,hi0.-ar.it); deseneaz[ =i umple un sector de elips[ de centru 1 x,y3, de raze ra;a0x =i ra;a0y delimitat de /n,hi0ince2/t =i /n,hi0.-ar.it. void -ar .et-ill2attern(char 1model, int c/loare);

define=te un model de umplere al utilizatorului.


void -ar .et-ill.tyle(int model, int c/loare);

seteaz[ un model de umplere =i o culoare de umplere. ."emple de modele de umplere0 &M<$=0CA!! 1sau 03 ! umplere cu culoarea de fond, #O!A%0CA!! 1sau 13 ! umplere uniform[, !A &0CA!! 1sau '3 ! ha=ur[ orizontal[ etc..

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