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.