Wie zeichne man einen Ausblendungstext auf einem benutzerdefinierten TGraphicControl aus?

8

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?

    
Vlad 14.12.2013, 10:38
quelle

2 Antworten

11

Damit sollten Sie beginnen:

%Vor%

Screenshot http://privat.rejbrand.se/fadestr.png

Kompilierte Demo-EXE

Aktualisieren

Hier ist ein einfaches Experiment mit einem Hintergrund:

%Vor%

Screenshot http://privat.rejbrand.se/fadestr2.png

Kompilierte Demo-EXE

Beispiel-Hintergrund-Bitmap

    
Andreas Rejbrand 14.12.2013, 12:49
quelle
5

Hiermit Andreas 'Code (Stimmen sollten für ihn sein!) in eine eigenständige Komponente integriert:

%Vor%     
NGLN 15.12.2013 03:43
quelle

Tags und Links