Sunteți pe pagina 1din 9

Ministerul Educaiei i Tineretului al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea de Calculatoare,Informatica si Microelectronica
Catedra Tehnolo!ii informationale"

#ucrare de #aborator
$r%&
'isciplina(Grafica pe calculator
Tema( Sinteza figurilor grafice
)arianta *
+ efectuat(
st% !r% TI,-./( 0rofir +%
+ verificat(
lector asistent( 1an!an T%



Chiinu 2 3-&&
4copul lucrarii(
Obinerea cunotinelor practice n sinteza figurilor i suprafetelor n baza bibliotecii
grafice a oricrui limbaj de programare (Pascal, C++, ori Jaa!"
4arcina 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.
Tabelul 1. Figuri grafice Tabelul 2. Variantele de ndeplinire a lucrrii
Consideraii teoretice:
Orice lucru n regim grafic se ncepe cu iniializarea modului grafic care se face cu ajutorul functiei
Init1raph51raph'river,1raphMode6 # funcia stabilete alorile implicite ale parametrilor de operare
n mod grafic i incarc de pe disc n memorie modulul drier corespunztor primului parametru" $odul
de lucru al drier%ului ncarcat este specificat prin al doilea parametru, iar denumirea complet a cii unde
se a cauta fiierul "&'( corespunztor este prezentat prin al treilea parametru" )nc*iderea modului se
face cu + Close!raph 2 funcia efectuiaz reenirea n mod te,t , modului implicit de lucru a sistemului
de afiare" -a apeleaz funcia grap*freemen pentru a elibera memoria ocupat de drier%ulgrafic, setul
sau seturile de caractere utilizate de program precum i zonele de memorie interne"
Funciile de desenare a liniilor i suprafeelor s7nt(
#ine58&,9&,83,936 # functia afiseaza o linie intre punctele de coordonate (,.,/.! si (,0,/0!, specificate
ca parametri"
Rectan!le58&,9&,83,936 # funcia afieaz un dreptung*i specificat prin dou rfuri diametral opuse+
stnga sus si dreapta jos"
)n biblioteca grafic e,ist funcii pentru desenarea urmtoarelor curbe conice+ cerc, arc de cerc, elips i
arc de elips
Circle58,9,r6 # funcia afieaz un cerc and centrul de coordonate (,,/! i raza r,specificate ca
parametri" 1aza se e,prim printr%un numr ntreg"
+rc58,9,ui,uf,r6 2 funcia afieaz un arc de cerc, ntre ung*iul iniial i ung*iul final snt specificate ca
parametri" 1aza cercului i coordonatele centrului , i / snt de asemenea parametri ai funciei"
2ng*iurile iniial i final se e,prim n grade, cuprinse ntre 3 i 453 grade"
Ellipse58,9,ui,uf,a,b6 2 funcia afieaz elipsa sau un arc de elips" Coordonatele centrului , i /,
semia,ele a i b precum i ung*iurile iniial ui i respecti uf snt specificate ca parametri ai funciei"
6r" 7enumirea figurii
. 8inia
0 9riung*i
4 7reptungi
:
Poligon (numrul de rfuri este egal
cu nr"de ordin al studentului n registru
+ :)
; Paralelepiped
5 Cerc
< -lipsa
= >ector de cerc
? >ector de elips
@arianta
nr"
Aiguri grafice nr"
;" :,;,&,3,<,/,.,*,=
'ra>pol95n,m6 2 funcia dat deseneaz un poligon cu numrul de rfuri n i coordonatele m"
4uprafaa poli!onal
Fillpol9 2 funcia afieaz o suprafat poliginal utilizind alorile curente ale atributelor de afiare ale
liniilor pentru contur, i alorile curente ale atributelor de afiare ale suprafeelor pentru restul punctelor
suprafeei" Poligonul se specific prin numrul de rfuri i ectorul coordonatelor (,,/! ale rfurilor" )n
cazul n care coordonatele ultimului rf difer de coordonatele primului rf poligonul este nc*is
automat"
setfillst9le5n,m6 2 funcia dat definete culoarea i stilul n care a fi colorat figura
4uprafaa circular i eliptic, sector de cerc i de elips
sector58,9,ui,uf,a,b6 % funcia deseneaz un sector de cerc sau de elips (depinte ce lungime le dm
ra/elor!" ,,/ # coordonatele centrului, ung*iurile iniial i respecti finalB a,b % razele"
Listingul programului:
CincludeDgrap*ics"*E
CincludeDconio"*E
CincludeDstdio"*E
CincludeDdos"*E
CincludeDstdlib"*E
int >ae&$P.5(c*ar FG!B
t/pedef unsigned c*ar b/teB
t/pedef unsigned int HordB
t/pedef unsigned long dHordB
oid main(!I
clrscr(!B
int gdJ7-9-C9,gm,cul,errorcodeB
int i,pol/F43G,radiusJ;3B
initgrap*(Kgd,Kgm,Lc+MM9CMM&'(L!B
errorcode J grap*result(!B
if(errorcode NJ grOO!
I
printf(LMn-roare graficaNNNMnL!B
dela/(;33!B
printf(LMn>e analizeaza cauza erorii L!B
for(iJ3BiD4Bi++!I
dela/(;;3!B printf(L"L!B
P
dela/(=;3!B printf(L QcONL,0!B
dela/(4;3!B te,tcolor(:!B
printf(LMnMnL!B
cprintf(LDDD Qs EEEL,grap*errormsg(errorcode!!B
printf(LMnL!B dela/(0;3!B
printf(LMnPress Re/ 9o -S(9L!B
getc*(!B
e,it(.!B
P
TT(mpartim ecranul cu ajutorul liniilor
line(3,.53,5:3,.53!B
line(3,403,5:3,403!B
line(0.3,3,0.3,:=3!B
line(:03,3,:03,:=3!B
line (3,3,3,:=3!B
line(3,3,5:3,3!B
line(54?,.,54?,:=3!B
line(3,:<?,5:3,:<?!B
TT."-lipsa
setcolor(.;!B
setfillst/le(=, .3!B
ellipse(.35,<3,3,453,=;,;;!B
fillellipse(.35,<3,=;,;;!B
setfillst/le(., .3!B
setcolor(.;!B
outte,t,/(=3,.:3,L-lipsaL!B
TT0"7reptung*i
setcolor(.!B
setfillst/le(., .3!B
rectangle(0:3,0;,4?3,.03!B
setcolor(.;!B
floodfill(0:.,05,.<!B
outte,t,/(0<3,.:3,L7reptung*iL!B
TT4"8inie
line(50;,5;,::3,5;!B
outte,t,/(;33,.:3,L8inieL!B
TT:"9riung*i
setcolor(.!B
setfillst/le(., .3!B
line(43,.=3,.53,.=3!B
line(43,.=3,.33,0<3!B
line(.33,0<3,.53,.=3!B
floodfill(.3=,003,.<!B
setcolor(.;!B
outte,t,/(<3,0?3,L9riung*iL!B
TT;">ector de cerc
setfillst/le(., .3!B
pieslice(433,0;;,3,.03,<3!B
outte,t,/(0;3,0?3,L>ector de cercL!B
TT5"Poligon
TTpoligon cu ? laturi
setcolor(.;!B
pol/F3GJ;.3B
pol/F.GJ.=3B
pol/F0GJ;:3B
pol/F4GJ.=3B
pol/F:GJ;<3B
pol/F;GJ033B
pol/F5GJ;<3B
pol/F<GJ043B
pol/F=GJ;:3B
pol/F?GJ0;3B
pol/F.3GJ;.3B
pol/F..GJ0;3B
pol/F.0GJ:=3B
pol/F.4GJ043B
pol/F.:GJ;03B
pol/F.;GJ0.3B
pol/F.:GJ;43B
pol/F.;GJ0.;B
pol/F.5GJ:=3B
pol/F.<GJ033B
pol/F.=GJ;.3B
pol/F.?GJ.=3B
draHpol/(.3,pol/!B
outte,t,/(;33,0?3,LPoligonL!B
TT<">ector de elipsa
setcolor(.;!B
setfillst/le(.,:!B
sector (..3,4=;,403,.33,=;,:3!B
outte,t,/(;3,:;3,L>ector de elipsaL!B
TT="Paralelipid
setcolor(.;!B
setfillst/le(.,3!B
bar4d(043,::3,4=3,4:;,.;,.!B
setcolor(.;!B
outte,t,/(05;,:;3,LParalelipipedL!B
TT?"Cerc
setcolor(.!B
setfillst/le(.,.3!B
circle(;43,4?3,radius!B
floodfill(;4;,4?;,.<!B
setcolor(.;!B
outte,t,/(;.3,:;3,LCercL!B
getc*(!B
TTfunctia de salare
printf(L >alam L!B
for(iJ3BiD4Bi++!I
dela/(;;3!B printf(L"L!B
P
>ae&$P.5(L8ab."&mpL!B
getc*(!B
P
struct &$P
I
TT &it$ap Aile Ueader
b/te bf9/peF0GB
dHord bf>izeB
Hord bf1esered.B
Hord bf1esered0B
dHord bfOffsetB
TT &it$ap (mage Ueader
dHord bi>izeB
dHord biVidt*B
dHord biUeig*tB
Hord biPlanesB
Hord bi&itCountB
dHord biCompressionB
dHord bi>ize(mageB
dHord biSPelsPer$eterB
dHord biWPelsPer$eterB
dHord biClr2sedB
dHord biClr(mportantB
PB
int >ae&$P.5(c*ar fileFG!
I
int iJ3, jJ3, r, g, bB
A(8- XfpB
&$P XbmpB
bmpJ(&$P X!malloc(;:!B
bmp%Ebf9/peF3GJY&YB
bmp%Ebf9/peF.GJY$YB
bmp%Ebf>izeJ.;4<.=B
bmp%Ebf1esered.J3B
bmp%Ebf1esered0J3B
bmp%EbfOffsetJ..=B
bmp%Ebi>izeJ:3B
bmp%EbiVidt*J5:3B
bmp%EbiUeig*tJ:=3B
bmp%EbiPlanesJ.B
bmp%Ebi&itCountJ:B
bmp%EbiCompressionJ3B
bmp%Ebi>ize(mageJ.;4533B
bmp%EbiSPelsPer$eterJ3B
bmp%EbiWPelsPer$eterJ3B
bmp%EbiClr2sedJ3B
bmp%EbiClr(mportantJ3B
fpJfopen(file, LHbL!B
if(fp JJ 6288!
I
printf(L6u se poate desc*ide fisierulL!B
getc*(!B
return .B
P

fHrite(bmp, ;:, ., fp!B
fseeO(fp, ;:8, >--RZ>-9!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(.0<, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(.0<, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(.0<, fp!B
fputc(.0<, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(.0<, fp!B
fputc(3,3, fp!B
fputc(.0<, fp!B
fputc(3,3, fp!B
fputc(.0<, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(.?0, fp!B
fputc(.?0, fp!B
fputc(3,3, fp!B
fputc(.?0, fp!B
fputc(.?0, fp!B
fputc(.?0, fp!B
fputc(3,3, fp!B
fputc(.0=, fp!B
fputc(.0=, fp!B
fputc(.0=, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B
fputc(0;;, fp!B
fputc(0;;, fp!B
fputc(0;;, fp!B
fputc(3,3, fp!B

iJ3B
jJ:<?B

fseeO(fp, ..=, >--RZ>-9!B

H*ile(jEJ3!
I
iJ3
H*ile(iD5:3!
I
fputc((getpi,el(i, j!DD:! [ getpi,el(i+., j!, fp!B
i+J0B
P
j%%B
P
closegrap*(!B
clrscr(!B
printf(LMn(maginea sa salat cu succes in fisierul+L!B
printf(LMn """TT9CTT&(6TT8ab."bmpL!B
printf(LMnMnPress an/ Oe/ to -,it"""L!B
free(bmp!B
fclose(fp!B
return 3B
P
ezultatele obtinute:

!oncluzie:
)n lucrarea de laborator 6r". am studiat metoda de introducere i reprezentare a figurilor n
limbajul de programare C"
Pentru a reprezenta figurile n cauz, am folosit functiile+
- pentru desenare + line, sector, circle, ellipse, rectangle, bar4, draHpol/ , pieslice"
% pentru umplerea cu culoare+ setfillst/le,floodfill"
7e asemenea s%au afiat figurile sintezate n diferite pori de izualizare, mprind prin liniile
trasate ertical i orizontal ecranul compilatorului,am utilizat operaiuni de salare n fiier in
formatul bmp "