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.