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.