Metode evoluate de programare Limbajele c şi C++



Yüklə 1,64 Mb.
səhifə29/44
tarix07.04.2018
ölçüsü1,64 Mb.
#46828
1   ...   25   26   27   28   29   30   31   32   ...   44

12.8. Gestiunea textelor

Pentru afişarea caracterelor colorate în conformitate cu atributele definite prin relaţia:


atribut = 16 * culoare_fond + culoare_caracter + clipire
se pot folosi funcţiile:

putch - pentru afişarea unui caracter;

cputs - pentru afişarea color a unui şir de caractere (acelaşi prototip ca puts);

cprintf - pentru afişarea color sub controlul formatelor.


Alte prototipuri de funcţii:

void insline (void); - inserează o linie cu spaţii în fereastră, liniile de sub

poziţia cursorului se deplasează în jos cu o poziţie;

void clreol (void) - şterge sfârşitul liniei începând cu poziţia cursorului;

void delline (void) - şterge toată linia pe care este poziţionat cursorul;

int movetext ( int stanga, int sus, int dreapta, int jos,

int stanga_dest, int dreapta_dest );
- copiază un text dintr-o poziţie în alta;

- returnează: 1 dacă textul s-a copiat cu succes şi 0 în caz de eroare.


Textele dintr-o zonă dreptunghiulară a ecranului pot fi salvate sau citite dintr-o zonă de memorie cu ajutorul funcţiilor puttext şi gettext şi au prototipurile:
int gettext (int stanga, int sus, int dreapta, int jos, void *destinatie);
unde

  1. primii patru parametrii definesc fereastra unde se află textul de salvat;

  2. destinatie este pointerul spre zona de memorie în care se salvează textul.

şi

int puttext (int stanga, int sus, int dreapta, int jos, void *sursa);


unde

  1. primii patru parametrii definesc fereastra unde se va scrie pe ecran textul preluat din memorie;

  2. sursa este pointerul spre zona de memorie din care se transferă textul.

Ele returnează:



  1. 1 la copiere cu succes;

  2. 0 la eroare.

Observaţie:

1o. Fiecare caracter de pe ecran se păstrează pe doi octeţi:

  1. pe un octet codul caracterului;

  2. pe octetul următor atributul caracterului.

Exemple:
1) Programul următor setează o fereastră şi modurile video alb/negru.


#include

void main (void)

{ textmode (BW80);

window (10,4,60,4);

clrscr ();

lowvideo ();

cputs(”lowvideo”);

normvideo ();

cputs (“normvideo”);

textmode (LASTMODE);

cprintf (“\n\r Acionati o tasta pentru a continua:”);

getch ();

}
2) Programul următor afişează toate combinaţiile de culori posibile pentru fond şi caractere (adaptor EGA/VGA).
#include

#include

void main (void)

{ static char *tculoare [ ] = { “ 0 BLACK negru”,

“ 1 BLUE albastru”,

“ 2 GREEN verde”,

“ 3 CYAN turcoaz”,

“ 4 RED rosu”,

“ 5 MAGENTA purpuriu”,

“ 6 BROWN maro”,

“ 7 LIGHTGRAY gri deschis”,

“ 8 DARKGRAY gri inchis”,

“ 9 LIGHTBLUE albastru deschis”,

“10 LIGHTGREEN verde deschis”,

“11 LIGHTCYAN turcoaz deschis”,

“12 LIGHTRED rosu dechis”,

“13 LIGHTMAGENTA purpuriu magenta”,

“14 YELLOW galben“,

“15 WHITE alb”};

int i,j,k;

struct text_info atribut;

gettextinfo (&atribut);

for (i = 0; i < 8; i++ ) // i alege culoarea fondului

{ window (3,2,60,20);

k=2;

textbackground (i);



clrscr();

for (j=0; j <10; j++, k++) // j alege culoarea caracterului

{ textcolor (j);

gotoxy (2,k);

if (i = = j) continue;

cputs (tculoare[j]);

}

gotoxy (1,18);



printf (“actionati o tasta pentru contiuare\n”);

getch();


}

window (atribut.winleft, atribut.wintop, atribut.winright, atribut.winbottom);

textattr (atribut. attribute);

clrscr();

}

13. Gestiunea ecranului în mod grafic

Modul grafic presupune că ecranul este format din “puncte luminoase” (pixeli). Numărul acestora depinde de adaptorul grafic şi se numeşte rezoluţie. O rezoluţie este cu atât mai bună cu cât este mai mare. Adaptorul CGA are o rezoluţie de 200 rânduri x 640 de coloane iar EGA de 350 de rânduri x 640 de coloane. Adaptorul VGA şi SVGA oferă rezoluţii în funcţie de mărimea ecranului. Astfel adaptorul VGA şi SVGA oferă rezoluţii de până la 768 de rânduri x 1024 de coloane pentru ecranul de 14” (inches).

Pentru gestiunea ecranului în mod grafic se pot utiliza peste 60 de funcţii standard aflate în biblioteca sistemului. Aceste funcţii au prototipurile în fişierul graphics.h. Totodată ele folosesc pointeri de tip far (de 32 de biţi).


13.1. Setarea modului grafic

Modul grafic se setează cu ajutorul funcţiei initgraph. Această funcţie poate fi folosită singură sau împreună cu o altă funcţie numită detectgraph care determină parametrii adaptorului grafic. Prototipul ei este:


void far detectgraph (int far *graphdriver, int far *graphmode);

unde:


  1. în zona spre care pointează graphdriver se păstrează una din valorile:

valoare simbol




  1. CGA

  2. MCGA

  3. EGA

  4. EGA64

  5. EGAMONO

  6. IBM8514

  7. HERCMONO

  8. ATT400

  9. VGA

  10. PC3270




  1. în zona spre care pointează graphmode se memorează una din valorile:

pentru CGA

valoare simbol


  1. CGAC0

  2. CGAC1

  3. CGAC2

  4. CGAC3

corespunzând toate pentru o rezoluţie de 320*200 de pixeli şi permit 4 culori

  1. CGAHI

are o rezoluţie de 640*200 puncte şi lucrează numai alb/negru.
pentru EGA

valoare simbol




  1. EGALO are 640*200 i 16 culori

  2. EGAHI are 640*350

pentru VGA

valoare simbol
0 VGALO are 640*200

1 VGAMED are 640*350

2 VGAHI are 640*480
Valorile spre care pointeză graphdriver definesc nişte funcţii standard corespunzătoare adaptorului grafic. Aceste funcţii se numesc drivere. Ele se află în subdirectorul BGI.

Funcţia detectgraph detectează adaptorul grafic prezent la calculator şi păstrează valoarea corespunzătoare acestuia în zona spre care pointează graphdriver. Modul grafic se defineşte în aşa fel încât el să fie cel mai performant pentru adaptorul grafic curent. Cele mai utilizate adaptoare sunt de tip EGA (calculatoare mai vechi) şi VGA şi SVGA (calculatoarele mai noi).

Apelul funcţiei detectgraph trebuie să fie urmat de apelul funcţiei initgraph. Aceasta setează modul grafic în conformitate cu parametrii stabiliţi de apelul prealabil al funcţiei detectgraph.

Funcţia initgraph are prototipul:


void far initgraph (int far * graphdriver, int far *graphmode, char far *cale);
unde:

  1. graphdriver şi graphmode sunt pointeri cu aceeaşi semnificaţie ca în cazul funcţiei detectgraph;

  2. cale este un pointer spre şirul de caractere care definesc calea subdirectorului BGI (Borland Graphic Interface), de exemplu:

“C:\\BOLANDC\\BGI”

Exemplu:


Setarea în mod implicit a modului grafic:
int driver, mod_grafic;

. . .


detectgraph (&driver, &mod_grafic);

initgraph(&driver, &mod_grafic, “C:\\BORLANDC\\BGI”);


După apelul funcţiei initgraph se pot utiliza celelalte funcţii standard de gestiune grafică a ecranului.

Din modul grafic se poate ieşi apelând funcţia closegraph care are prototipul:


void closegraph (void);
Funcţia initgraph mai poate fi apelată şi folosind constanta simbolică DETECT astfel:

int driver, mod_grafic;

. . .

driver = DETECT;



initgraph (&driver, &mod_grafic, “C:\\BORLANDC\\BGI”);
Constanta simbolică DETECT este definită în fişierul graphics.h, alături de celelalte constante simbolice care definesc driverul. Aceasta are valoarea zero.

Prin apelul de mai sus, funcţia initgraph apelează funcţia detectgraph pentru a defini parametrii impliciţi ai adaptorului grafic.

Utilizatorul poate defini el însuşi parametri pentru iniţializarea modului grafic.



Yüklə 1,64 Mb.

Dostları ilə paylaş:
1   ...   25   26   27   28   29   30   31   32   ...   44




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin