In response to this question I wrote this code.
function IsSameBitmapUsingScanLine(Bitmap1, Bitmap2: TBitmap): Boolean; var i : Integer; ScanBytes : Integer; begin Result:= (Bitmap1<>nil) and (Bitmap2<>nil); if not Result then exit; Result:=(bitmap1.Width=bitmap2.Width) and (bitmap1.Height=bitmap2.Height) and (bitmap1.PixelFormat=bitmap2.PixelFormat) ; if not Result then exit; ScanBytes := Abs(Integer(Bitmap1.Scanline[1]) - Integer(Bitmap1.Scanline[0])); for i:=0 to Bitmap1.Height-1 do begin Result:=CompareMem(Bitmap1.ScanLine[i],Bitmap2.ScanLine[i],ScanBytes); if not Result then exit; end; end;