Vorgehensweise: Festlegen von Tabstopps in gezeichnetem Text
Sie können Tabstopps für Text festlegen, indem Sie die SetTabStops-Methode eines StringFormat-Objekts aufrufen und dieses StringFormat-Objekt dann an die DrawString-Methode der Graphics-Klasse übergeben.
Hinweis
System.Windows.Forms.TextRenderer unterstützt nicht das Hinzufügen von Tabstopps zum Zeichnen von Text, obwohl Sie vorhandene Tabstopps mithilfe des TextFormatFlags.ExpandTabs-Flags erweitern können.
Beispiel
Im folgenden Beispiel werden Tabstopps auf 150, 250 und 350 festgelegt. Anschließend zeigt der Code eine Liste im Registerkartenformat mit Namen und Testergebnissen an.
In der folgenden Abbildung wird dieser Text im Registerkartenformat veranschaulicht:
Der folgende Code übergibt zwei Argumente an die SetTabStops-Methode. Das zweite Argument ist ein Array, das Taboffsets enthält. Das erste an SetTabStops übergebene Argument ist 0 (null), das angibt, dass das erste Offset im Array ab der Position 0 (der linke Rand des umgebenen Rechtecks) gemessen wird.
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);
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)
Kompilieren des Codes
- Das obige Beispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgs
e
, einen Parameter von PaintEventHandler.
Siehe auch
.NET Desktop feedback