![]() |
CustomControl nach Repaint nicht mehr transparent
Hallo Leute,
ich bau mir zur Zeit ein etwas ansprechenderes Interface für ein Programm. Speziell arbeite ich gerade an einer Art Button. Das ganze ist abgeleitet von TCustomControl, transparent, in der Paint Methode wird ein Teiltransparentes PNG ins Canvas kopiert. Folgende Problematik: Sobald ich das Element neu malen will (Repaint), geht die Transparenz flöten und ein weißer Hintergrund erscheint hinter den transparenten Stellen des PNGs! Dasselbe bei Invalidate, bei der normalen Paint Methode läuft Alles problemlos (minimieren-maximieren -> alles wieder normal). Hier die relevanten Codeauszüge:
Delphi-Quellcode:
constructor TPControl.Create(AOwner: TComponent);
begin inherited; ControlStyle := ControlStyle-[csOpaque]+[csAcceptsControls]; end; procedure TPControl.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle+WS_EX_Transparent; end; procedure TPControl.Paint; begin inherited; Canvas.Draw(0, 0, Images.Graphic); end; Und dann zB bei...
Delphi-Quellcode:
...tritt der Fehler auf. Aber auch wenn ich Repaint/Invalidate über das Programm aufrufe.
procedure TPControl.CMMouseEnter(var Message: TMessage);
begin inherited; FMouseOver := True; Repaint; //<-------------!!! end; Canvas füllen geht nicht, da der Hintergrund variiert! Ich hoffe Ihr habt da ne Idee, mfg |
Re: CustomControl nach Repaint nicht mehr transparent
Und wenn du deine Paint-Methode zum Zeichnen benutzt?
Delphi-Quellcode:
procedure TPControl.CMMouseEnter(var Message: TMessage);
begin inherited; FMouseOver := True; Paint; end; |
Re: CustomControl nach Repaint nicht mehr transparent
Ja das klappt schon, trotzdem wurmt mich das :wink:
|
Re: CustomControl nach Repaint nicht mehr transparent
Naja, das zeigt dir aber, das das Repaint nicht deine Paint-Methode aufruft. Wenn du das Verhalten haben möchtest, dann musst du deine Komponente eben dementsprechend abändern.
|
Re: CustomControl nach Repaint nicht mehr transparent
Es würde mich allerdings interessieren was da passiert, ich will ja nicht Repaint überschreiben ohne zu wissen was es genau tut.
Zitat:
|
Re: CustomControl nach Repaint nicht mehr transparent
Naja, wäre zwar interessant gewesen, bin aber jetzt auf ein GraphicControl umgestiegen.
mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 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