不用管循环多少次......关键看实际速度......你比较下就知道了
刚改了下有个错误 应该是bmpw*3
我比较2个1024*768的图片几乎没感觉到有迟钝,CPU也看不到有多高
你要是用basebmp.Canvas.Pixels[x,y]自然效率会降低很多
procedure tform1.aa;
var
bmph,bmpw,i,j:integer;
p1,p2,p3: PByteArray;
begin
bmph:=basebmp.height;
bmpw:=basebmp.width;
tmpbmp.Height:=bmph;
tmpbmp.Width:=bmpw;
basebmp.PixelFormat:=pf24bit;
newbmp.PixelFormat:=pf24bit;
tmpbmp.PixelFormat:=pf24bit;
for J:=0 to bmph-1 do
begin
P1 := basebmp.ScanLine[J];
P2 := newbmp.ScanLine[J];
P3 := tmpbmp.ScanLine[J];
for I:=0 to bmpw*3-1 do
P3 := P1 Xor P2;
end;
end;