Gewusst wie: Festlegen von Tabstopps in gezeichnetem Text

Aktualisiert: November 2007

Sie können Tabstopps für Text festlegen, indem Sie die SetTabStops-Methode eines StringFormat-Objekts aufrufen und das StringFormat-Objekt anschließend an die DrawString-Methode der Graphics-Klasse übergeben.

Hinweis:

Der System.Windows.Forms.TextRenderer unterstützt nicht das Hinzufügen von Tabstopps zu gezeichnetem Text, obwohl Sie vorhandene Tabstopps mit dem TextFormatFlags.ExpandTabs-Flag erweitern können.

Beispiel

Im folgenden Beispiel wurden Tabstopps an den Positionen 150, 250 und 350 gesetzt. Durch den Code wird anschließend eine tabstoppgetrennte Liste mit Namen und Testergebnissen ausgegeben.

In der folgenden Abbildung ist der tabstoppgetrennte Text dargestellt.

Schriftartentext

Im folgenden Code werden zwei Argumente an die SetTabStops-Methode übergeben. Das zweite Argument ist ein Array, das Tabulatoroffsets enthält. Das erste an SetTabStops übergebene Argument lautet 0. Dies bedeutet, dass der erste Offset im Array von Position 0, also der linken Ecke des umschließenden Rechtecks, gemessen wird.

Dim myText As String = _
   "Name" & ControlChars.Tab & _
   "Test 1" & ControlChars.Tab & _
   "Test 2" & ControlChars.Tab & _
   "Test 3" & ControlChars.Cr

myText = myText & "Joe" & ControlChars.Tab & _
                  "95" & ControlChars.Tab & _
                  "88" & ControlChars.Tab & _
                  "91" & ControlChars.Cr
myText = myText & "Mary" & ControlChars.Tab & _
                  "98" & ControlChars.Tab & _
                  "84" & ControlChars.Tab & _
                  "90" & ControlChars.Cr
myText = myText & "Sam" & ControlChars.Tab & _
                  "42" & ControlChars.Tab & _
                  "76" & ControlChars.Tab & _
                  "98" & ControlChars.Cr
myText = myText & "Jane" & ControlChars.Tab & _
                  "65" & ControlChars.Tab & _
                  "73" & ControlChars.Tab & _
                  "92" & ControlChars.Cr

Dim fontFamily As New FontFamily("Courier New")
Dim font As New Font( _
   fontFamily, _
   12, _
   FontStyle.Regular, _
   GraphicsUnit.Point)
Dim rect As New Rectangle(10, 10, 450, 100)
Dim stringFormat As New StringFormat()
Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim tabs As Single() = {150, 100, 100, 100}

stringFormat.SetTabStops(0, tabs)

e.Graphics.DrawString(myText, font, solidBrush, RectangleF.op_implicit(rect), stringFormat)

Dim pen As Pen = Pens.Black
e.Graphics.DrawRectangle(pen, rect)

string text = "Name\tTest 1\tTest 2\tTest 3\n";
text = text + "Joe\t95\t88\t91\n";
text = text + "Mary\t98\t84\t90\n";
text = text + "Sam\t42\t76\t98\n";
text = text + "Jane\t65\t73\t92\n";

FontFamily fontFamily = new FontFamily("Courier New");
Font font = new Font(
   fontFamily,
   12,
   FontStyle.Regular,
   GraphicsUnit.Point);
Rectangle rect = new Rectangle(10, 10, 450, 100);
StringFormat stringFormat = new StringFormat();
SolidBrush solidBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
float[] tabs = { 150, 100, 100, 100 };

stringFormat.SetTabStops(0, tabs);

e.Graphics.DrawString(text, font, solidBrush, rect, stringFormat);

Pen pen = Pens.Black;
e.Graphics.DrawRectangle(pen, rect);

Kompilieren des Codes

Siehe auch

Aufgaben

Gewusst wie: Zeichnen von Text mit GDI

Weitere Ressourcen

Verwenden von Schriftarten und Text