1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
// déclaration
type
BmpAddArray = ARRAY[0..10] OF TRGBTriple;
pBmpAdd = ^BmpAddArray;
TBmpMem = ARRAY[0..10] OF TRGBTriple;
pBmpMem = ^TBmpMem;
pbmpAncienne = ^TBmpMem;
...
VAR
TImageReel : array of real;
TabImage : array of tbitmap;
......
//Bout de code ou j'utilise les pointeurs
Procedure additionBmp(numImage:Byte; var IdxImg:byte);
var
IdxTab : byte;
debutY,finY,debutX,finX:integer;
MireBmp : Trect;
pAffiche : pBmpAdd;
pNouvelle :pbmpMem;
pAncienne :pbmpAncienne;
i,J : integer;
coltRed, coltGreen, coltBlue : integer;
Delta : real;
begin
......
try
IdxTab:=idxImg mod Form3.CMoyenne.Value;
bmpAncienne:= TabImage[IdxTab] ;
for j:=0 to FinY-DebutY-1 do begin //Hauteur
pAffiche := bmpAdd.ScanLine[j]; // ICI ??
pNouvelle := bmpMem.ScanLine[j]; // ICI ??
pAncienne := bmpAncienne.ScanLine[j]; // ICI ??
// pointeur sur premiere
for i:= 0 to FinX-DebutX-1 do begin //Largeur
with pAffiche[i] do
begin
TImageReel[J*TailleMire*3 + 3*i] := TImageReel[J*TailleMire*3 + 3*i] + CoefAdd * (pNouvelle[i].rgbtRed - pAncienne[i].rgbtRed) / Form3.CMoyenne.Value;
TImageReel[J*TailleMire*3 + 3*i+1] := TImageReel[J*TailleMire*3 + 3*i+1] + CoefAdd * (pNouvelle[i].rgbtGreen - pAncienne[i].rgbtGreen) / Form3.CMoyenne.Value;
TImageReel[J*TailleMire*3 + 3*i+2] := TImageReel[J*TailleMire*3 + 3*i+2] + CoefAdd * (pNouvelle[i].rgbtBlue - pAncienne[i].rgbtBlue) / Form3.CMoyenne.Value;
coltRed := round(TImageReel[J*TailleMire*3 + 3*i]);
coltGreen := round(TImageReel[J*TailleMire*3 + 3*i+1]);
coltBlue := round(TImageReel[J*TailleMire*3 + 3*i+2]);
if (coltRed < 0) then coltRed := 0;
if (coltGreen < 0) then coltGreen := 0;
if (coltBlue < 0) then coltBlue := 0;
if (coltRed > 255) then coltRed := 255;
if (coltGreen > 255) then coltGreen := 0;
if (coltBlue > 255) then coltBlue := 0;
{if (coltRed < 0) or (coltGreen< 0) or (coltBlue< 0) then
form3.Memo1.Lines.Add(inttostr(coltRed) + ' ' + inttostr(coltGreen) + ' ' + inttostr(coltBlue));
if (coltRed >255) or (coltGreen>255) or (coltBlue>255) then
form3.Memo1.Lines.Add(inttostr(coltRed) + ' ' + inttostr(coltGreen) + ' ' + inttostr(coltBlue)); }
rgbtRed := coltRed;
rgbtGreen := coltGreen;
rgbtBlue := coltBlue;
end;
end //I
end; //J |
Partager