Cada pixel esta compuesto por 3 bytes (depende del formato) uno para el rojo, otro para el verde y otro para el azul. Una solucion rapida pero poco elegante para tu codigo seria algo como esto:
Código Delphi
[-]
procedure TForm1.Button2Click(Sender: TObject);
var
x,y : Integer;
BitMap1, BitMap2 : TBitMap;
A, B : PByteArray;
begin
BitMap1 := TBitMap.create;
BitMap2 := TBitMap.create;
try
BitMap1.LoadFromFile('000.bmp');
BitMap2.LoadFromFile('111.bmp');
BitMap1.PixelFormat:= pf24bit; BitMap2.PixelFormat:= pf24bit;
for y := 0 to BitMap1.Height - 1 do
begin
A := BitMap1.ScanLine[y];
B := BitMap2.ScanLine[y];
for x := 0 to (BitMap1.Width*3) - 1 do begin
if A[x] <> B[x] then
B[x] := 0;
end;
end;
Image3.Picture.Graphic := BitMap2;
finally
BitMap1.Free;
BitMap2.Free;
end;
end;
La solucion que yo prefiero, es dejarse de arrays de bytes y usar punteros pero aqui cada uno como se sienta mas comodo.