![]() |
ClipRgnTest
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe ein kleines Testprojekt für SelectClipRgn & Co. erstellt.
Falls jemand das mal hilft, hier als Anlage... |
AW: ClipRgnTest
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; |
AW: ClipRgnTest
Nja, erstmal könnte man vielleicht auf die irrsinnige Idee kommen und die Rückgabewerte der Prozeduren Funktionen prüfen. :angle2:
|
AW: ClipRgnTest
Zitat:
Code:
dann ist der Rückgabewert von GetClipRgn 1, und das weitere funktioniert.
lRgn3:=CreateRectRgn(irgendwas)
Renate |
AW: ClipRgnTest
Renate, vielen Dank!
Das funktioniert perfekt. Ich hatte nirgendwo einen entsprechenden Hinweis gefunden.. |
AW: ClipRgnTest
Zitat:
![]() Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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