Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrarea de laborator Nr.1
La Grafica pe calculator
02/03/2016
A efectuat:
A verificat:
Chiinu, 2016
Sarcina lucrrii:
1. Elaborai un program pentru sintetizarea i afiarea figurilor
grafice conform variantelor prezentate in tabelele 1 i 2.
2. Afiai simultan toate figurile sintezate in diferite pori de
vizualizare.
3. In codul scris prevedei salvarea imaginii intr-un fiier i restabilirea
ei ulterioar.
Varianta 4
Funciile de desenare a liniilor i suprafeelor sunt:
Line(x1,y1,x2,y2) functia afieaz o linie intre punctele de
coordonate (x1,y1) si (x2,y2), specificate ca parametri.
Rectangle(x1,y1,x2,y2) funcia afieaz un dreptunghi specificat
prin dou vrfuri diametral opuse: stnga sus si dreapta jos.
#include <conio.h>
#include <fstream>
#include <iostream>
using namespace std;
void salvare(){
int i,j;
ofstream f;
f.open("image.jpg",ios::out);
for(i=0;i<1280;i++)
for(j=0;j<800;j++)
f<<
getpixel(i,j)<<" ";
f.close();
}
void citire(){
int i,j;
unsigned int p;
ifstream r;
r.open("image.jpg",ios::in);
for(i=0;i<1280;i++)
for(j=0;j<800;j++){
r>>p;
putpixel(i,j,p);
}
r.close();
}
int main()
{
int gd = DETECT;
int gm;
initgraph(&gd, &gm, "C:\\TC\\BGI");
//Cerc
circle(125, 125, 100);
//Sector de cerc
arc(350, 125, 0, 90, 100);
int points[] = {350, 25, 350, 125, 450, 125};
drawpoly(3, points);
setfillstyle(1, 10);
floodfill(400, 100, WHITE);
//Triunghi
int tpoints[] = {525, 25, 525, 225, 725, 225, 525, 25};
setfillstyle(1, 1);
fillpoly(4, tpoints);
//Poligon cu 8 laturi
int p_points[] = {850, 25,
800, 100,
800, 150,
850, 225,
900, 225,
950, 150,
950, 100,
900, 25,
850, 25
};
drawpoly(9, p_points);
//Dreptunghi
setfillstyle(1, 2);
bar(1050, 25, 1340, 225);
//Linie
setcolor(YELLOW);
line(25, 500, 225, 500);
//Elipsa
setcolor(15);
ellipse(500, 500, 0, 360, 100, 125);
//Paralelipiped
int r_points[] = {
800, 400, 700, 600, 900, 600, 1000, 400, 800, 400
};
setfillstyle(1, RED);
fillpoly(5, r_points);
//Sectiune de elipsa
ellipse(1100, 500, 0, 80, 150, 100);
int e_points[] = {1249, 500, 1116, 500, 1116, 400};
drawpoly(3, e_points);
setfillstyle(1, 5);
floodfill(1150, 450, WHITE);
getch();
salvare();
cleardevice();
citire();
getch();
closegraph();
}