Sunteți pe pagina 1din 7

Scopul lucrării: Obtinerea cunostintelor practice în sinteza figurilor

grafice elementare. ș ț Partea teoretică: temele 1-3

Sarcina lucrării:
1. Elabora i un program pentru sintetizarea şi afi area figurilor grafice
conform variantelor prezentate în ț ș tabelele 1 i 2. Ș
2. Afi a i simultan toate figurile sintetizate în diferite por i de
vizualizare. ș ț ț
3. În codul scris prevede i salvarea imaginii într-un fi ier i
restabilirea ei ulterioară.
1 Linie
2 Triunghi
3 Dreptunghi
4 Poligon (numărul de vârfuri N = <nr. de ordine al studentului în
registrul grupei> + 4)
5 Paralelipiped
6 Cerc
7 Elipsă
8 Sector de cerc
9 Sector de elipsă

Varianta 31: 4,3,1,7,8,5,9,2,6


Colorați figurile subliniate cu culori diferite
Întrebări de control:
1. Biblioteci grafice
În C/C++ funcțiile specifice modului de lucru graphic alcătuiesc biblioteca graphics. Forma
profesională cea mai raspândită a acesteia a fost realizată în 1987 de Borland Software Corporation
(USA), în prezent o componentă a Micro Focus International (USA). De aceea fișierele folosite pentru
manipularea informațiilor alcătuite în formatul recunoscut de memoria video au extensia .bgi
(Borland Graphics Interface). Mediile de programare integrate (Dev-C++,Eclipse ș.a.),care au fost
implementate ulterior, folosesc NUMAI modul de afișare text. și nu au inclusă biblioteca graphics.De
aceea un program C care utilizează funcțiile bibliotecii graphics se poate executa numai sub formă
de project/proiect. Există numeroase variante de implementare a bibliotecii graphics. Întrucât în
Laboratorul de PCLP este folosit mediul Dev-C++, s-a ales varianta bibliotecii grafice propuse de
Univ. Realizarea efectivă a unui program care operează în modul graphic presupune parcurgerea a
două etape: - pregatirea SC prin atașarea la mediul Dev-C++ a bibliotecii graphice și a bibliotecii
fișierelor .bgi necesare operării cu memoria video; - alcătirea programului propriu-zis sub fomă de
proiect. Este evident că prima etapă se realizează o singură data iar cea de-a doua etapă se parcurge
pentru fiecare program grafic care se execută.

2. Drivere i moduri grafice ș


3. Primitive grafice
Primitive grafice reprezintă elementele de imagine care pot fi afişate cu ajutorul funcţiilor din biblioteca
grafica. Astfel de elemente sunt: punctul, linia, cercul, elipsa, arcul de cerc, arcul de elipsa, sectorul de
cerc, dreptunghiul, poligonul. Toate primitivele grafice au atribute geometrice (coordonate ecran ş.a.) şi
atribute de afişare (culoarea, tipul de linie, tipul de interior, grosimea liniei ş.a.). Fiecare atribut de
afişare are o valoare implicita, stabilita la iniţializarea modului grafic sau prin apelul funcţiei
Graphdefault.

4. Atributele de afi are ale primitivelor grafice ș


Atribute de afişare ale primitivelor grafice sînt următoarele: - culoarea de desenare - tipul de linie -
grosimea liniei - tipul de interior - culoarea de interior Toate atributele au valori implicite. Pentru
specificarea valorilor ce se doresc a fi folosite la generarea primitivelor grafice trebuie apelate o
serie de funcţii ale bibliotecii grafice.

5. Poarta de vizualizare
Poarta de vizualizare poate fi orice zona dreptunghiulara a ecranului. Ea reprezintă zona în care va fi
vizualizat desenul descris în cadrul aplicaţiei. Poarta implicita este întregul ecran. Coordonatele
transmise funcţiilor de afişare apelate în programele de aplicaţie sunt considerate relative la
originea porţii de vizualizare curente. Aceasta permite afişarea unui desen oriunde pe ecran, prin
simpla redefinire a porţii de vizualizare.

6. Formate standard de imagini


7. Opera ii cu imagini
Imaginea afişata pe ecran în mod grafic este stocata în memoria video. Capacitatea acestei memorii
diferă de la un adaptor grafic la altul. De asemenea, cantitatea de memorie necesara pentru a memora
imaginea de pe întregul ecran depinde de modul video în care se lucrează. Astfel, cantitatea de memorie
necesara este cu atât mai mare, cu cit rezoluţia este mai mare şi se lucrează intr-un mod video cu mai
multe culori afişabile simultan pe ecran. În unele moduri video, capacitatea memoriei video este
suficient de mare pentru a permite păstrarea mai multor imagini ecran. Zona de memorie video
necesara pentru a păstra un întreg ecran se numeşte pagina video. În tabelul următor sunt prezentate
modurile grafice pentru adaptoarele ce suporta mai multe pagini video.

Cod sursa:
#include<graphics.h>
#include <conio.h>
#include <math.h>
#define PI 3.14159265

//varianta 31
void createTable(){
line(50,50,650,50);
line(50,650,650,650);
line(50,50,50,650);
line(650,50,650,650);
line(250,50,250,650);
line(450,50,450,650);
line(50,250,650,250);
line(50,450,650,450);
}

void drawContent(){
//cell 1 - Poligon (4)
double pas = 360 / 35;
int i = 0;
moveto(150,150);
for(double angle = 0;angle<=360;angle = angle+pas){
//line(550,150,550+(50*cos(angle*PI/180)),150+(50*sin(angle*PI/180)));
setcolor(RED);
//fillellipse(550+(90*cos(angle*PI/180)),150+(90*sin(angle*PI/180)),3,3);
if(i==0){
setcolor(BLACK);
}else{
setcolor(YELLOW);
}
lineto(550+(90*cos(angle*PI/180)),550+(90*sin(angle*PI/180)));
i++;
}

//cell 2 - Linie (1) ok


setcolor(2);
line(255,150,445,150);
//cell 3 - Elipsa (7) ok
setcolor(5);
ellipse(550,150,0,360,80,40);

//cell 4 Sector de Cerc (8) ok


setcolor(6);
arc(150,350,180,120,80);

//cell 5 - Dreptunghi (3)


setcolor(15);
rectangle(55,100,245,200);

//cell 6 Sector de Elipsa (9)


setcolor(15);
ellipse(550,350,110,70,80,40);

//cell 5 Paralelipiped (5)


setcolor(15);
rectangle(300,300,400,400);
setlinestyle(DASHED_LINE,50,1);
rectangle(330,270,430,370);
line(300,400,330,370);
setlinestyle(SOLID_LINE,50,1);
line(300,300,330,270);
line(400,300,430,270);
line(400,400,430,370);
line(330,270,430,270);
line(430,270,430,370);

//cell 7 Triunghi (2) ok


setcolor(15);
int triangle[] = {350,470,270,630,430,630,350,470};
drawpoly(4,triangle);

/*//cell 8 Cerc (6)


setcolor(15);
circle(150,150,80);*/

main()
{
int gd = DETECT, gm;
initgraph(&gd,&gm, "");
createTable();
drawContent();

getch();
}
Concluzie:
Efectuînd această lucrare am obtinut cunostinte practice în sinteza figurilor grafice elementare
facut analizat bazele graficii în limbajul C++.

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