EraseInverted

procedure EraseInverted(img: TImage32; const polygon: TPathD; fillRule: TFillRule; const bounds: TRect); overload;

procedure EraseInverted(img: TImage32; const polygons: TPathsD; fillRule: TFillRule; const bounds: TRect); overload;


EraseInverted will clear whatever's between the supplied rectangle and polygon regions.

uses Img32, Img32.Fmt.PNG, Img32.Extra;
...
var
  img: TImage32;
  path: TPathD;
begin
  img.LoadFromFile('./lenna.png');
  path := Ellipse(Rect(20,20,236,236));
  EraseInverted(img, path, frNonZero, img.Bounds);
  img.SaveToFile('erase_outer.png');
  img.Free;
end;
    
Before:
After: