Sunteți pe pagina 1din 5

Ministerul Educaiei i Tineretului al Republicii Moldova

Universitatea Tehnic a Moldovei

Catedra: Automatic i Tehnologii Informaionale

RAPORT
Lucrare de laborator Nr.1
la Grafica pe Calculator

A efectuat:
st. gr. SI-151 Cucu Dumitru

A verificat:
lector superior Plotnic Constantin
Chiinu 2017
Tema: SINTEZAREA FIGURILOR GRAFICE

Scopul lucrrii: Obinerea cunotinelor practice n sinteza figurilor grafice

Sarcina lucrrii:

1. De a elabora un program pentru sintezarea i afiarea figurilor grafice conform variantelor tabelul 1 i 2.
2. De a afia figuri sintezate n diferite pori de vizualizare.
3. De a utiliza operaiuni de salvare i restaurare a imaginilor n/din fiiere

Varianta 9
8,1,6,2,5,3,4,7,9
Tabelul 1. Figuri grafice
Nr. Denumirea figurii
1 Linia
2 Triunghi
3 Dreptungi
4 Poligon numrul de vrfuri este egal
cu nr.de ordin al studentului n registru
+ 4
5 Paralelepiped
6 Cerc
7 Elipsa
8 Sector de cerc
9 Sector de elips

Tabelul 2. Variantele de ndeplinire a lucrrii


Varianta Figuri grafice nr.
nr.

1. 1,2,3,4,5,6,7,8,9
2. 3,1,5,4,8,6,7,9,2
3. 2,5,4,3,9,7,6,8,1
4. 4,1,3,8,7,6,9,2,5
5. 7,3,1,2,8,4,9,5,6
6. 5,2,4,6,8,3,7,9,1
7. 1,3,5,7,9,2,4,6,8
8. 6,8,2,4,3,1,7,5,9
9. 8,1,6,2,5,3,4,7,9
10. 9,2,4,3,5,7,6,8,1
11. 1,3,5,7,9,2,4,6,8
12. 2,4,6,8,1,3,5,7,9
13. 3,4,2,1,9,6,5,8,7
14. 7,4,2,1,9,6,5,8,3
15. 1,2,4,3,5,7,6,8,9
Figuri subliniate se coloreaz

Listingul programului
#include <graphics.h>
#include <conio.h>
#include <fstream>
using namespace std;

void salvare() {
int i, j;
ofstream f;
f.open("1.png", ios::out);
for (i = 0; i<640; i++)
for (j = 0; j<480; j++)
f << getpixel(i, j) << " ";
f.close();
}

void citire() {
int i, j;
unsigned int p;
ifstream r;
r.open("1.png", ios::in);
for (i = 0; i<640; i++)
for (j = 0; j<480; j++) {
r >> p;
putpixel(i, j, p);
}
r.close();
}

int main(void)
{
int driver, mode;
char c;
int triunghi[8] = { 60,270, 110,180, 160,270, 60,270 };
int polinom[28] = { 20,430, 20,400, 35,360, 50,400, 65,360, 80,400, 95,360, 110,400, 125,360, 140,400, 155,360,
170,400, 170,430, 20,430 };
driver = DETECT;
initgraph(&driver, &mode, "c:\\bc5\\bgi");
citire();
getch();
line(0, 160, 650, 160);
line(0, 320, 650, 320);
line(216, 0, 216, 500);
line(432, 0, 432, 500);

setfillstyle(XHATCH_FILL,1);
setcolor (15);
circle(540 , 80, 50);//cerc
pieslice(120, 80, 50, 260, 50);//sector de cerc
fillpoly(4, triunghi);//triunghi
bar3d(270, 200, 350, 270, 20, 20);//paralelipiped
setcolor (15);
rectangle(470, 205, 600, 270);//dreptunghi
setcolor (15);
drawpoly(14, polinom);//polinom
fillellipse(320, 380, 80, 40);// elipsa
sector(530, 380, 0, 270, 80, 40);//sector de elipsa
setcolor (1);
line(250, 70, 380, 70);//linie
setcolor(15);
floodfill(540,80,15);
circle(540,80,50);//cerc

salvare();
getch();
return 0;
}

Datele obinute:

Concluzie:
Pentru realizarea sarcinii acestei lucrri de laborator am avut ca scop utilizarea a mai
multor metode de gestionare i folosire a variabilelor, i anume: variabile globale care pot fi
utilizate i modificate oriunde n program, variabile dinamice care se creeaz pe parcursul
rulrii programului i nu la nceputul funciei ca de obicei; acestea pot fi create i distruse pe
parcursul rulrii programului, astfel economisind memoria i nu la nceputul i la sfr itul
acestuia, i transmiterea variabilelor prin adrese ceea ce presupune accesul direct la adresa
unei variabile i modificarea nemijlocit a acesteia.