SUBPROGRAME ORIETNTATE SPRE SALVAREA IMAGINILOR, Aplicatie



SUBPROGRAME ORIETNTATE SPRE SALVAREA IMAGINILOR

8.1 Proceduri si functii

ImageSize



Functia ImageSize returneaza numarul de octeti necesari salvarii unei imagini. Functia se defineste astfel:

Function ImageSize(x1,y1,x2,y1:integer):word;

X1,Y1 reprezinta coordonatele coltului stanga sus ale dreptunghiului;

X2,Y2 reprezinta coordonatele coltului dreapta jos ale dreptunghiului.

GetImage

Procedura GetImage salveaza o imagine intr-o zona de memorie definita de utilizator. Procedura se defineste astfel:

Procedure GetImage (x1,y1,x2,y2:integer;varBitMap);

X1,y1 reprezinta coordonatelor coltului stanga sus ale dreptului, iar x2,y2 reprezinta coordonatele coltului dreapta jos ale dreptunghilui ce se salveaza. Se pot salva zone mai mici de 64K octeti. Variabila BitMap referazona in care se face salvarea imaginii. Primele doua cuvinte ale zonei contin latimea si lungimea zonei dreptunghiuluilare, de aceea dimensiunea obtinuta cu functia GetImage.  

PutImage

Procedura PutImage suprapune regiunea salvata peste ecran. Procedura se defineste astfel:

Procedure PutImage(x,y:integer;var:BitMap;BitBlt:word);

X,y reprezinta coltul stanga sus al regiunii dreptunghiular de pe ecran unde va fi restabilita imaginea.



Variabila Bitmap contine latimea, lungimea regiunii si harta in biti a imaginii.

Variabila Bitblt descrie operatia binara intre punctele regiunii ce se suprapune pe ecran si punctele ecranului.

Aceasta variabila se defineste astfel:

Const

NormalPut=0;  MOV -mutare simpla

CopyPut= 1;    MOV - mutare simpla

XORPut=2;     XOR -sau exclusiv

OrPut=3;         OR - disjunctie

AndPut=4;      AND - conjunctie

NotPut=5;    Not- negatie


8.2 Aplicatie

Programul image realizeaza culorarea ecranului cu albastru, decupeaza o portiune din aceasta si o salveaza in memorie dupa ce sa rezervat spatiu de memorie necesar salvarii, dupa care este restabilita acea portiune (imagine).

Uses Graph, Crt;

Var gd, gm:integer;

P:pointer;

Size:word;

Begin

Gd:=detect;

InitGraph (Gd, Gm, 'c:bpbgi');

If graphresult <> grOK then

Halt(1);

SetFillStyle (1.1);

Bar(0.0.GetMaxX.GetMaxY);

Size :=ImageSize (1.20.30.40);

GetMen(p,Size);

GetImage(10.20.30.40.p^);

Readln;

ClearDevice;

PutImage(100.100.p^,xorput);

Readln;

CloseGraph;

end.