Respekt, nicht schlecht!
Hab mal zum Vergleich statt des roten Rechtecks einen Ausschnitt generiert, immernoch rasant:
Delphi-Quellcode:
var
//...
bRect: TRect;
MemBmp: TBitmap;
//...
if RadioButton1.Checked then // Rotes Rechteck war hier, jetzt Ausschnitt :-)
begin
Inc(aRect.Right);
Inc(aRect.Bottom);
MemBmp := TBitmap.Create;
try
MemBmp.PixelFormat := PrevImage.Picture.Bitmap.PixelFormat;
MemBmp.Width := aRect.Right - aRect.Left;
MemBmp.Height := aRect.Bottom - aRect.Top ;
bRect := Rect(0, 0, MemBmp.Width, MemBmp.Height);
MemBmp.Canvas.CopyRect(bRect, PrevImage.Picture.Bitmap.Canvas, aRect);
PrevImage.Picture.Bitmap.Assign(MemBmp);
finally
MemBmp.Free;
end;
end;