Hmm
Ich verwende Regionen ja so selten und dann nur so, dass sie über die Gesamte Programmlaufzeit gelten.
Aber ich dachte der Code sei so gemeint:
Delphi-Quellcode:
Var MyRgn: HRGN;
Begin
MyRgn := CreateRectRgn(0, 0, 200, 100); // Region erstellen
SelectClipRgn(Canvas.Handle, MyRgn); // Region auf Canvas zuweisen
Canvas.Ellipse(0, 0, 200, 200); // zeichnen
SelectClipRgn(Canvas.Handle, nil); // Regionen in Canvas löschen
DeleteObject(MyRgn); // Region freigeben/löschen
End;
Wenn es mit dem Freigeben nicht geht, dann solltest du es wohl eher die zweite Zuweisung (SelectClipRgn) ganz löschen, denn eine doppelte Zuweisung ist ja Sinnlos:
Delphi-Quellcode:
Var MyRgn: HRGN;
Begin
MyRgn := CreateRectRgn(0, 0, 200, 100);
SelectClipRgn(Canvas.Handle, MyRgn);
Canvas.Ellipse(0, 0, 200, 200);
DeleteObject(MyRgn);
End;