Thema: Delphi ClipRgnTest

Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ClipRgnTest

  Alt 19. Apr 2023, 22:44
Ich muss gleich mal nachfragen...

Warum wird lRgn3 im geänderten Beispiel nicht zugewiesen?
Ich möchte die aktuelle Clipping-Region sichern und diese später wieder herstellen.

Die aktuelle Clipping-Region wird ja innerhalb von ExtSelectClipRgn verarbeitet.
Genau diese möchte ich in einer Region speichern und dachte, dafür wäre GetClipRgn da...?

Delphi-Quellcode:
  procedure TForm1.FormActivate(Sender: TObject);
  var
    lRect : TRect;
    lRgn1, lRgn2, lRgn3: Cardinal;
  begin
    lRgn1 := 0;
    lRgn2 := 0;
    lRgn3 := 0;

    Canvas.FillRect(ClientRect);

    lRect := TRect.Create(100, 100, 200, 200);
    Canvas.Brush.Color := clYellow;
    Canvas.FillRect(lRect);

    lRect := TRect.Create(200, 200, 300, 300);
    Canvas.Brush.Color := clBlue;
    Canvas.FillRect(lRect);

    lRgn1 := CreateRectRgn(150, 150, 250, 250);
    SelectClipRgn(Canvas.Handle, lRgn1);
    GetClipRgn(Canvas.Handle, lRgn3); // tmp
    Canvas.Brush.Color := clGreen;
    Canvas.FillRect(ClientRect);
    GetClipRgn(Canvas.Handle, lRgn3); // tmp

    lRgn2 := CreateRectRgn(160, 160, 260, 260);
    ExtSelectClipRgn(Canvas.Handle, lRgn2, RGN_OR);
    Canvas.Brush.Color := clRed;
    Canvas.FillRect(ClientRect);

    GetClipRgn(Canvas.Handle, lRgn3); // <-- Warum wird lRgn3 nicht die aktuelle Clip-Region des Canvas zugewiesen?

    lRgn2 := CreateRectRgn(16, 16, 26, 26);
    SelectClipRgn(Canvas.Handle, lRgn2);
    Canvas.Brush.Color := clTeal;
    Canvas.FillRect(ClientRect);

    SelectClipRgn(Canvas.Handle, lRgn3); // <-- Hier sollte die gesicherte Clip-Region wieder asgewählt werden!
    Canvas.Brush.Color := clNavy;
    Canvas.FillRect(ClientRect);

    DeleteObject(lRgn1);
    DeleteObject(lRgn2);

    SelectClipRgn(Canvas.Handle, HRGN(nil));

    Canvas.Brush.Color := clBtnFace;
    Canvas.FillRect(ClientRect);
  end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat