Home » Tipps & Tricks » Grafik » Konvertierungen » Strings in einem Bitmap ausgeben
Strings in einem Bitmap ausgeben
Dieser Artikel zeigt, wie Sie Strings als Bitmap ausgeben können.
Die Prozedur erwartet vier Parameter, wobei die letzten beiden optional sind. Dem ersten Parameter müssen die Strings übergeben werden. Diese können z.B. in einer Stringlist stehen. Mehrzeilige Texte können so ohne Probleme verarbeitet werden. Dem zweiten Parameter wird das Zielbitmap übergeben, worauf der Text ausgegeben wird. Über AMarginX und AMarginY wird gesteuert, wo die Prozedur an der linken, oberen Ecke mit dem Zeichnen beginnen soll.
procedure TextToBitmap(const AText: TStrings; ATarget: TBitmap; AMarginX: Integer=0; AMarginY: Integer=0); var Y: Integer; LineH, LineW: Integer; begin ATarget.Width := 0; LineH := ATarget.Canvas.TextHeight('Wg'); ATarget.Height := (AText.Count*LineH) + (AMarginY*2); for Y := 0 to AText.Count-1 do begin LineW := ATarget.Canvas.TextWidth(AText.Strings[Y] + AMarginX*2); if ATarget.Width < LineW then ATarget.Width := LineW; TextOut(ATarget.Canvas.Handle, AMarginX, AMarginY+LineH*Y, AText.Strings[Y], Length(AText.Strings[Y])); end; end;
Folgender Beispielaufruf lädt eine Textdatei in eine Stringlist und gibt diese in einem Image aus:
procedure TForm1.Button1Click(Sender: TObject); var Strings: TStringList; begin Strings := TStringList.Create; try Strings.LoadFromFile('C:\WINDOWS\wmsetup.log'); TextToBitmap(Strings, Image1.Picture.Bitmap, 1, 0); finally Strings.Free; end; end;
Achten Sie darauf, dass der String nicht zu groß wird, da es sonst zu einer EOutOfResources-Exceptionen kommen kann.