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: