Pentru afişarea caracterelor colorate în conformitate cu atributele definite prin relaţia:
cputs - pentru afişarea color a unui şir de caractere (acelaşi prototip ca puts);
cprintf - pentru afişarea color sub controlul formatelor.
- returnează: 1 dacă textul s-a copiat cu succes şi 0 în caz de eroare.
void main (void)
{ textmode (BW80);
window (10,4,60,4);
clrscr ();
lowvideo ();
cputs(”lowvideo”);
normvideo ();
cputs (“normvideo”);
textmode (LASTMODE);
cprintf (“\n\r Acionati 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).
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:
-
în zona spre care pointează graphdriver se păstrează una din valorile:
valoare simbol
-
CGA
-
MCGA
-
EGA
-
EGA64
-
EGAMONO
-
IBM8514
-
HERCMONO
-
ATT400
-
VGA
-
PC3270
-
în zona spre care pointează graphmode se memorează una din valorile:
pentru CGA
valoare simbol
-
CGAC0
-
CGAC1
-
CGAC2
-
CGAC3
corespunzând toate pentru o rezoluţie de 320*200 de pixeli şi permit 4 culori
-
CGAHI
are o rezoluţie de 640*200 puncte şi lucrează numai alb/negru.
pentru EGA
valoare simbol
-
EGALO are 640*200 i 16 culori
-
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:
-
graphdriver şi graphmode sunt pointeri cu aceeaşi semnificaţie ca în cazul funcţiei detectgraph;
-
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.
Dostları ilə paylaş: