Thema: Delphi Colored Names in Delphi?

Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Colored Names in Delphi?

  Alt 18. Mär 2005, 18:58
bin zwar nicht klein, einsam und gelangweilt aber habs trotzdem mal versucht umzusetzen...
Delphi-Quellcode:
procedure DrawColorTextToCanvas(AText: String; ACanvas: TCanvas; APos: TPoint);
var LLeft, LPos, LLastPos, LCount: Integer;
    LStr2, LWord: String;
    LColorList: TStringlist;
    LColor: TColor;
begin
  LColorList := TStringList.Create;
  LPos := 1;
  LLastPos := 1;
  LPos := PosEx('\c', AText, LPos);
  while LPos > 0 do
  begin
    LStr2 := copy(AText, LPos + 2, 6);
    if length(LStr2) = 6 then
    begin
      LColor := RGB(StrToInt('$' + copy(AText, LPos + 2, 2)),
                    StrToInt('$' + copy(AText, LPos + 4, 2)),
                    StrToInt('$' + copy(AText, LPos + 6, 2)));
      LStr2 := copy(AText, LLastPos, LPos - LLastPos);
      LColorList.AddObject(LStr2, TObject(LColor));
      LWord := LWord + LStr2;
    end;
    LLastPos := LPos + 8;
    LPos := PosEx('\c', AText, LLastPos);
  end;
  LStr2 := copy(AText, LLastPos, length(AText) - LLastPos + 1);
  if LStr2 <> 'then
  begin
    LColorList.AddObject(LStr2, nil);
    LWord := LWord + LStr2;
  end;
  LLeft := APos.X;
  for LCount := 0 to LColorList.Count - 1 do
  begin
    ACanvas.TextOut(LLeft, APos.Y, LColorList.Strings[LCount]);
    ACanvas.Font.Color := TColor(LColorList.Objects[LCount]);
    LLeft := LLeft + ACanvas.TextWidth(LColorList.Strings[LCount]);
  end;
  LColorList.Free;
end;
Beispielaufruf:
   DrawColorTextToCanvas('\c0000ffHein\cff0000z', Canvas, Point(0,0)); ich denk die aufgabe war so einfach das auch du es in einer Zeit von weniger als einer Stunde hinnbekommen hättest.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat