AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClipRgnTest

Ein Thema von stahli · begonnen am 19. Apr 2023 · letzter Beitrag vom 20. Apr 2023
 
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz