Sunteți pe pagina 1din 4

Ministerul Educatiei i tiintei al Republicii Moldova

UNIVERSITATEA TEHNIC DIN MOLDOVA


Catedra Electronic

Referat
La Grafica pe calculator
Lucrarea de laborator Nr 1

Tema:

Sinteza Figurilor Grafice

A efectuat:
A verificat:

studentul
grupa:
profesoara: Plotnic Constantin

Chiinu 2008

Scopul lucrrii: Obinerea cunotinelor practice n sinteza figurilor i


suprafetelor n baza bibliotecii grafice a oricrui limbaj de programare (Pascal, C++, ori
Java).
Consideraii teoretice:
Orice lucru n regim grafic se ncepe cu iniializarea modului grafic care se face cu
ajutorul functiei InitGraph(GraphDriver,GraphMode) funcia stabilete valorile
implicite ale parametrilor de operare n mod grafic i incarc de pe disc n memorie
modulul driver corespunztor primului parametru. Modul de lucru al driver-ului ncarcat
este specificat prin al doilea parametru, iar denumirea complet a cii unde se va cauta
fiierul .BGI corespunztor este prezentat prin al treilea parametru. nchiderea modului
se face cu : Closegraph funcia efectuiaz revenirea n mod text , modului implicit de
lucru a sistemului de afiare. Ea apeleaz funcia graphfreemen pentru a elibera memoria
ocupat de driver-ulgrafic, setul sau seturile de caractere utilizate de program precum i
zonele de memorie interne.
Funciile de desenare a liniilor i suprafeelor snt:
Line(x1,y1,x2,y2) functia afiseaza 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.
n biblioteca grafic exist funcii pentru desenarea urmtoarelor curbe conice: cerc, arc
de cerc, elips i arc de elips
Circle(x,y,r) funcia afieaz un cerc avnd centrul de coordonate (x,y) i raza
r,specificate ca parametri. Raza se exprim printr-un numr ntreg.
Arc(x,y,ui,uf,r) funcia afieaz un arc de cerc, ntre unghiul iniial i unghiul final snt
specificate ca parametri. Raza cercului i coordonatele centrului x i y snt de asemenea
parametri ai funciei. Unghiurile iniial i final se exprim n grade, cuprinse ntre 0 i 360
grade.
Ellipse(x,y,ui,uf,a,b) funcia afieaz elipsa sau un arc de elips. Coordonatele
centrului x i y, semiaxele a i b precum i unghiurile iniial ui i respectiv uf snt
specificate ca parametri ai funciei.
Drawpoly(n,m) funcia dat deseneaz un poligon cu numrul de vrfuri n i
coordonatele m.
Suprafaa poligonal
Fillpoly funcia afieaz o suprafat poliginal utilizind valorile curente ale atributelor
de afiare ale liniilor pentru contur, i valorile curente ale atributelor de afiare ale
suprafeelor pentru restul punctelor suprafeei. Poligonul se specific prin numrul de
vrfuri i vectorul coordonatelor (x,y) ale vrfurilor. n cazul n care coordonatele ultimului
vrf difer de coordonatele primului vrf poligonul este nchis automat.
setfillstyle(n,m) funcia dat definete culoarea i stilul n care va fi colorat figura
Suprafaa circular i eliptic, sector de cerc i de elips
sector(x,y,ui,uf,a,b) - funcia deseneaz un sector de cerc sau de elips (depinte ce
lungime le dm
rayelor). x,y coordonatele centrului, unghiurile iniial i respectiv
final; a,b - razele.

Textul programului:
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <fstream.h>
void salvare(){
int i,j;
ofstream f;
f.open("1.txt",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.txt",ios::in);
for(i=0;i<640;i++)
for(j=0;j<480;j++){
r>>p;
putpixel(i,j,p);
}
r.close();
}
void desen(int style, int color)
{setfillstyle(style,color);
floodfill(560,80,15);
}
void main()
{
clrscr();
int graphdriver=DETECT,graphmode,cul;
char c;
int
pol[80]={20,240,30,200,40,240,50,200,60,240,70,200,80,240,90,200,100,240,110,200,120,240,130,200,1
40,240,150,200,160,240,170,200,180,240,190,200,200,240,200,300,40,300,20,285,20,240};
initgraph (&graphdriver,&graphmode,"\bgi");
line(0,160,640,160);
line(0,320,640,320);
line(213,0,213,480);
line(426,0,426,480);
line(0,0,640,0);
line(0,0,0,479);
line(0,479,639,479);
line(639,0,639,479);
//----- Cerc------setcolor(15);
circle(106,80,60);
//-----Sector de cerc------setcolor(15);

setfillstyle(1,2);
pieslice(319, 80, 35, 220, 60);
//-------------Triunghi-----setfillstyle(1,2);
line(476,120,596,120);
line(536,25,596,120);
line(536,25,476,120);
floodfill(536,45,15);
//----- Poligon14-----setcolor(15);
drawpoly(30,pol);
//----- Dreptunghi------setcolor(15);
rectangle(250,200,390,280);
floodfill(300,225,15);
//-----Linia------setcolor(2);
line (450,310,620,170);
//----- Elipsa------setcolor(15);
ellipse(105,400,0,360,90,40);
//----- Paralelipiped------setcolor(15);
setfillstyle(1,2);
bar3d (240,370,370,450,30,1);
//----- Sector de elipsa------setcolor(15);
setfillstyle(1,2);
sector(534,425,45,135,100,50);
getch();
salvare();
cleardevice();
citire();
getch();
closegraph();
}

Concluzii: Efectund lucrarea dat am facut cunotin cu bazele graficii n


limbajul C++, am fcut cunotin cu funciile de desenare a figurilor primitive i cu
modurile de colorare a lor i afiare unor sectiuni a acestor figuri.