Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
880 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Transparentes TCustomControl

  Alt 26. Sep 2023, 20:42
In den Konopka Signature VCL Controls (vormals Raize Components), die es mittlerweile über GetIt gibt, wird das über eine procedure DrawParentImage realisiert.
So auf Anhieb flackert das auch, aber zumindest ist dann auch bei DoubleBuffered der Transparenz-Effekt da.

Ich habe die DrawParentImage-Funktion, die dort immer im WMEraseBkgnd ausgeführt wird, einfach mal benutzt, um ein Background-Bitmap zu cachen. Die Funktion macht ja nichts anderes, als das Parent per wm_PrintClient aufzufordern, sich auf ein anderes Handle zu zeichnen. Wenn der Hintergrund konstant bleibt, muss man das ja nicht immer wieder machen - da reicht dann ein mehr oder weniger statisches Bitmap. In der TDemoDings.Paint zeichne ich dann einfach mit Canvas.Draw(0,0,FBitmap); das Bitmap auf das eigene Canvas. Das funktioniert dann weitgehend flackerfrei, und mit DoubleBuffered bemerke ich gar kein Flackern mehr.

Das werde ich mal als Option beibehalten. (Und bei den paar Zeilen hätte ich auch keine Bedenken bzgl. Copyright oder Lizenzfragen. )

Müsste doch per TGraphicControl funktionieren.
Das ist so ohne weiteres leider keine Option, da auch Eingaben per Tastatur gewollt sind - z.B. Verschieben des Reglers mit den Pfeiltasten. Und das wird im TWinControl-Zweig implementiert.
The angels have the phone box.
  Mit Zitat antworten Zitat