Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben (https://www.delphipraxis.net/81816-schrift-fonts-mehr-farbig-auch-einzelne-buschstaben.html)

Hallo_Thomas 4. Dez 2006 14:29


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

mkinzler 4. Dez 2006 14:30

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
 
Am Einfachsten nimmst du ein HTML oder RTF-fähiges Label.

cruiser 4. Dez 2006 14:37

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
 
Ich empfehle mal aus dem Windows-SDK:

MSDN-Library durchsuchenBitBlt, MSDN-Library durchsuchenMaskBlt und MSDN-Library durchsuchenTextOut

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:

Hallo_Thomas 4. Dez 2006 15:25

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.

cruiser 4. Dez 2006 19:30

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:
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;
Hab nochmal drübergeschaut... Müsste jetzt funzen :stupid:

Reinhard Kern 5. Dez 2006 04:56

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
 
Zitat:

Zitat von cruiser
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:
...
Hab nochmal drübergeschaut... Müsste jetzt funzen :stupid:

Hallo,

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

mkinzler 5. Dez 2006 05:48

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
 
http://www.delphipraxis.net/internal...=566682#566682

cruiser 5. Dez 2006 11:01

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
 
Zitat:

Zitat von Reinhard Kern
...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. ...

Er hat nie gesagt WIE das mit dem "farbig" gemeint ist... hat er einen Senkrechten Farbverlauf z.B. reicht es eben nicht. Da ich mich zudem grade selbst damit auseinandergesetzt hab, hatte ich halt eine universelle, wenn auch kompliziertere Methode (nein, kein Text bei mir aber etwas ähnlich gelagertes)

Reinhard Kern 5. Dez 2006 11:56

Re: Schrift Fonts mehr-Farbig? -Auch einzelne Buschstaben
 
Zitat:

Zitat von cruiser
Zitat:

Zitat von Reinhard Kern
...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. ...

Er hat nie gesagt WIE das mit dem "farbig" gemeint ist... hat er einen Senkrechten Farbverlauf z.B. reicht es eben nicht. Da ich mich zudem grade selbst damit auseinandergesetzt hab, hatte ich halt eine universelle, wenn auch kompliziertere Methode (nein, kein Text bei mir aber etwas ähnlich gelagertes)

Ja, das ursprüngliche Posting ist recht missverständlich - unter "mehrfarbigen Buchstaben" kann man sich viel vorstellen.

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