AGB  ·  Datenschutz  ·  Impressum  







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

Transparentes TCustomControl

Ein Thema von Gausi · begonnen am 25. Sep 2023 · letzter Beitrag vom 26. Sep 2023
 
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Transparentes TCustomControl

  Alt 26. Sep 2023, 18:00
Danke für die Antworten! Ich verbuche das dann mal unter der Rubrik "Schöne Idee, aber lass ma lieber." Je mehr ich dazu im Netz rumsuche, desto mehr finde ich User, die an dem Thema verzweifeln, irgendwelche Krücken bauen, oder es einfach sein lassen. Jetzt gibt es ein weiteres Thema dazu.

DoubleBuffered malt auf ein internes Bitmap, anstatt direkt auf den Canvas.
Dieses Buffered-Bitmap wird aber ohne Tansparenz gemalt, also immer vollflächig.
Ok, dann mache ich da also im Prinzip keinen Fehler. Dass das Buffered-Bitmap, das bei DoubleBuffered genutzt wird, den Transparenz-Wunsch des Controls ignoriert, war mir nicht bewusst. Dann kann man da mit vertretbarem Aufwand nichts dran ändern. Denn ein eigenes "TWinControl" abzuleiten, dass eine andere Form von DoubleBuffering unterstützt, ist an der Stelle zu viel Aufwand. Auch andere Tricksereien werde ich dann eher sein lassen. (In einem Thread hier hat z.B. einer als Basis TGraphicControl genommen, das ein ein verstecktes TCustomControl erzeugt, dass dann die Tastatureingaben und Fokus etc. erhält.)
Da werde ich eher das Konzept für meine Control etwas überdenken, so dass ich auch gut ohne Transparenz leben kann. Dann ist der Hintergrund halt einfarbig.

My suggestion is : if it is possible and the background is not moving/changing (a lot), then cache it and don't use the InvalidateRect as it is the cause of the flickering box, and just redraw that box from you cache to remove your old red circle. (here you also can use smaller box at the size of the red circle)
Yes, this would simulate the transparency - which I already do in some cases. I just thought that there is a more elegant way to do this. It seems, that this is not the case. Maybe I'll add this as well for this component in a later version. But this should be easy to implement afterwards, when the component is otherwise ready.

Ist übrigens nichts wildes - soll eine skinbare Progress-Track-Range-Bar für meinen Player werden, bei der man zusätzlich einen Bereich für A-B-Wiederholung einstellen kann. Also quasi eine Trackbar mit bis zu drei Buttons und einer Fortschrittsanzeige. Bisher ist das zusammengefrickelt mit Shapes, Buttons und Images, und der ganze Code wird auf der Form erledigt (Verschieben per Drag&Drop, Umrechnung des Fortschritts von Sekunden in Pixel etc.). Das muss mal besser gemacht werden.
The angels have the phone box.
  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 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz