![]() |
Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Hallo,
Gibt es Komponente mit der ich Buchstaben mehrfarbig machen kann?Bzw. geht das mit canvas? mfg Thomas |
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Am Einfachsten nimmst du ein HTML oder RTF-fähiges Label.
|
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Ich empfehle mal aus dem Windows-SDK:
![]() ![]() ![]() Erst mit normaler Schriftausgabe die Maske für die 'bunte Schrift' bauen Auf ein weiteres Unsichtbares Bitmap die Farben drauflegen und dann nur laut Maske von dem bunten Zeugs auf das AnzeigeCanvas kopieren Viel Spass! Edit: Hrm... irgendwie hab ich den ersten Post falsch gelesen... egal, vielleicht trotzdem brauchbar :angel2: Edit2: Nein, doch nich... in der Überschrift war von einzelnen Buchstaben die Rede :drunken: |
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Jo, genau das ist das Problem, einzelne Buchstaben bekomme ich da nicht wirklch hin.
Dass einzige was ich bis jetzt gefunden habe, war das JVWinAmpLabel, doch irgenwie ist das auch nicht so das wahre. |
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Dann versuch mal über eine Maske (gebastelt mit TextOut), eine Farbsource(die so gross ist, wie die Maske) und anschliessend das ganze via MaskBlt auf das Zielcanvas zu übertragen. Evtl. musst du noch den Platzbedarf berechnen um Maske und Farbsource zu kalkulieren.
PS: Wenn du dann viel Langeweile hast, kannst du's ja in eine eigene Label-Komponente kapseln :mrgreen: EDIT: mal ganz grob:
Delphi-Quellcode:
Hab nochmal drübergeschaut... Müsste jetzt funzen :stupid:
procedure cnvDrawColoredText(Text: string; Canvas: TCanvas; X,Y: Integer);
var Mask, cSrc: TBitmap; Size: TSize; i: Integer; begin // Groesse berechnen Size := Canvas.TextExtent(Text); // Buffer vorbereiten Mask := TBitmap.Create; Mask.Width := Size.cx; Mask.Height := Size.cy; cSrc := TBitMap.Create; cSrc.Width := Size.cx; cSrc.Height := Size.cy; { : : // cSrc wie gewünscht colorieren : : } // Maske schwarz faerben Mask.Canvas.Pen.Color := clBlack; Mask.Canvas.Brush.Color := clBlack; Mask.Canvas.Rectangle(0,0,Size.cx,Size.cy); // Text in Weiss schreiben Mask.Canvas.Font.Color := clWhite; Mask.Canvas.TextOut(0,0,Text); // Maske Schwarz/Weiss machen Mask.Monochrome := True; Mask.PixelFormat := pf1bit; // Kopieren // Wichtig! MUSS 2 mal durchlaufen for i:= 0 to 1 do MaskBlt( Canvas.Handle, X, Y, Size.cx, Size.cy, cSrc.Canvas.Handle, 0, 0, Mask.Handle, 0, 0, MakeROP4(SRCCOPY,DSTINVERT) ); Mask.Free; cSrc.Free; end; |
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Zitat:
wo ist überhaupt das Problem, für das man eine so komplizierte Lösung braucht? man kann doch unbestritten einen roten Text schreiben, dahinter einen blauen usw. - im Extremfall ist eben jeder farbige Text nur einen Buchstaben lang. Ist natürlich was anderes, wenn man nach der Anzahl der Zeilen bezahlt wird, dann macht so etwas Sinn. Gruss Reinhard |
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
|
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Zitat:
|
Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
Zitat:
Gruss Reinhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz