Sunteți pe pagina 1din 4

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatica, Microelectronica

Raport
Lucrare de Laborator Nr. 1
la disciplina “GRAFICA PE CALCULATOR”

Tema : Sintetizarea figurilor grafice


Varianta 10

A efectuat : Rosca Doinita


st. Gr. TI-171 FR
A verificat : Plotnic Constantin

Chişinău 2019
Scopul lucrării
Obţinerea cunoştinţelor practice în sinteza figurilor grafice.

Sarcina lucrării
1. De a elabora un program pentru sintezarea şi afişarea figurilor grafice conform variantelor .
2. De a afişa figuri sintezate în diferite porţi de vizualizare.
3. De a utiliza operaţiuni de salvare şi restaurare a imaginilor în/din fişiere

Nr. Denumirea figurii


1 Linia
2 Triunghi
3 Dreptungi
4 Poligon numărul de vîrfuri 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ă

Datele:
10 9,2,4,3,5,7,6,8,1
*Figuri subliniate se colorează.

Codul-sursa al programului
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <iostream>
#include <dos.h>
#include <math.h>
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;
char path[] = "D:\\Univer TI 171 fr\\Anul II\\Semestru II\\GC";
initgraph(&gd, &gm, path);
citire();
line(200,1,200,540);
line(410,1,410,530);
line(1,150,640,150);
line(1,310,640,310);
//Sector de elipsa facut
ellipse(120,75,90,270,70,50);
line(119,124,119,25);
setfillstyle(1, 2);
floodfill(100, 80, 15);
//Triunghi +
line(300, 30, 300 + 50, 110);
line(350, 110, 260, 110);
line(260, 110, 300, 30);
setfillstyle(1, 7);
floodfill(300, 50, 15);
//Poligon nr elevelui din registru 14
int sides = 10 + 4;
int poly_points[sides * 2];
int range = 50;
int points[sides * 2 + 2];
for (int j=1; j <= sides; j++) {
int i = (j -1) * 2;
points[i] = range * cos(2 * M_PI * j/sides) + 520;//x
points[i + 1] =range * sin(2 * M_PI * j/sides) + 70;//y
}
points[sides * 2] = points[0];
points[sides * 2 + 1] = points[1];
drawpoly(sides +1 , points);
//Dreptunghi+
rectangle(13, 190, 183, 270);
setfillstyle(1, 4);
floodfill(14, 191, 15);
//Paralelepiped+
line(250,170,400,170);
line(400,170,350,270);
line(350,270,205,270);
line(205,270,250,170);
setfillstyle(1,3);
floodfill(250,269,15);
//Elipsa
ellipse(520,230,0,360,60,40);
//Cerc+
circle(100,390,60);
setfillstyle(1, 6);
floodfill(100, 390, 15);
//Sector de cerc+
sector(310, 390, 90, 270, 50, 50);
setfillstyle(1, 15);
//Linia
line(450,425,590,345);
salvare();
getch();
cleardevice();
getch();
closegraph();}

Rezultatul

Concluzie
Efectuînd lucrarea dată am facut cunoştinţă cu bazele graficii în limbajul C++, am făcut
cunoştinţă cu funcţiile de desenare a figurilor primitive şi cu modurile de colorare a lor şi
afişare unor sectiuni a acestor figuri.

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