Ich möchte Fade-Out-Text auf einem TGraphicControl zeichnen, ähnlich wie die Tabs in Google Chrome, wenn nicht genügend Platz vorhanden ist, um den gesamten Text im Canvas-Bereich anzuzeigen.
Anstatt Elipsis-Text anzuzeigen (was ich weiß), möchte ich, dass es so ausblendet:
Das TGraphicControl muss eine transparente Option wie TCustomLabel ( ControlStyle - [csOpaque]
) haben.
Dies ist wahrscheinlich eine einfache Aufgabe mit GDIPlus, aber ich muss reines GDI verwenden.
Ich versuche auch, den Code von TGradText v.1.0 zu studieren (Direct download ) was (fast) genau das tut, was ich brauche - es kann transparenten Text zeichnen, aber das Ergebnis sieht sehr schlecht aus und nicht glatt. Ich schätze, das liegt daran, dass es eine pmCopy-Maske für diese Aufgabe erstellt.
Hier ist der Code, den ich basierend auf Andreas Rejbrands Antwort geschrieben habe. Ich habe eine PaintBox über einem TImage verwendet und den Backgound vorgerendert:
%Vor%Das Ergebnis sieht folgendermaßen aus:
Wie Sie sehen können, ist auch die rechte Kante des Hintergrunds verblasst. Es sieht gut aus. aber ich frage mich, ob nur der Text mit TLama sugeestion verblasst werden könnte?
Damit sollten Sie beginnen:
%Vor%Screenshot http://privat.rejbrand.se/fadestr.png
Aktualisieren
Hier ist ein einfaches Experiment mit einem Hintergrund:
%Vor%Hiermit Andreas 'Code (Stimmen sollten für ihn sein!) in eine eigenständige Komponente integriert:
%Vor%