Wenn Du weißt wo Du es zerlegen willst könntest Du in diesem Beispiel mit vier Regions OR,OL,UR,UL und jeweiligen Combine mit Deiner Region 4 Stück erzeugen.
Wenn Du das Ganze irgendwie automatisieren musst, kannst Du vielleicht folgenden Fetzen brauchen ...
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
type
RgnRects = array[0..0] of TRect;
pRgnRect = ^RgnRects;
var
rgn:hrgn;
RgnData : pRgnData;
aSize : DWORD;
RgnPtr : pRgnRect;
aRect : TRect;
i:Integer;
begin
rgn := CreateEllipticrgn(0,0,200,200);
aSize := GetRegionData(rgn, 0, nil);
GetMem(RgnData, aSize);
GetRegionData(rgn, aSize, RgnData);
RgnPtr := @RgnData.Buffer;
for i := 0 to pred(RgnData.rdh.nCount) do
begin
aRect := RgnPtr[i];
Canvas.Rectangle(aRect);
end;
FreeMem(RgnData);
DeleteObject(rgn);
end;