Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um Text mit einer speziellen Formatierung zu versehen, initialisieren Sie ein StringFormat-Objekt und übergeben die Adresse dieses Objekts an die DrawString-Methode der Graphics-Klasse.
Wenn Sie formatierten Text in einem Rechteck zeichnen möchten, benötigen Sie die Objekte Graphics, FontFamily, Font, RectF, StringFormat und Brush.
Ausrichten von Text
Im folgenden Beispiel wird Text in einem Rechteck gezeichnet. Es wird nicht nur jede einzelne Textzeile, sondern auch der gesamte Textblock im Rechteck (von oben nach unten) zentriert.
Dim myText As String = "Use StringFormat and RectangleF objects to center text in a rectangle."
Dim fontFamily As New FontFamily("Arial")
Dim font As New Font( _
fontFamily, _
12, _
FontStyle.Bold, _
GraphicsUnit.Point)
Dim rect As New Rectangle(30, 10, 120, 140)
Dim stringFormat As New StringFormat()
Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
' Center each line of text.
stringFormat.Alignment = StringAlignment.Center
' Center the block of text (top to bottom) in the rectangle.
stringFormat.LineAlignment = StringAlignment.Center
e.Graphics.DrawString(myText, font, solidBrush, RectangleF.op_implicit(rect), stringFormat)
Dim pen As Pen = Pens.Black
e.Graphics.DrawRectangle(pen, rect)
[C#]
string text = "Use StringFormat and RectangleF objects to center text in a rectangle.";
FontFamily fontFamily = new FontFamily("Arial");
Font font = new Font(
fontFamily,
12, FontStyle.Bold,
GraphicsUnit.Point);
Rectangle rect = new Rectangle(30, 10, 120, 140);
StringFormat stringFormat = new StringFormat();
SolidBrush solidBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
// Center each line of text.
stringFormat.Alignment = StringAlignment.Center;
// Center the block of text (top to bottom) in the rectangle.
stringFormat.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(text, font, solidBrush, rect, stringFormat);
Pen pen = Pens.Black;
e.Graphics.DrawRectangle(pen, rect);
In der folgenden Abbildung ist ein Rechteck mit dem zentrierten Text dargestellt.
.png)
Im vorangehenden Code werden zwei Eigenschaften des StringFormat-Objekts festgelegt: Alignment und LineAlignment. Durch die Alignment-Eigenschaft wird festgelegt, dass jede Textzeile im Rechteck, das an die DrawString-Methode übergeben wird, horizontal zentriert wird. Die LineAlignment-Eigenschaft bestimmt, dass der Textblock vertikal (von oben nach unten) im Rechteck zentriert wird.
Der Wert Center ist ein Member der StringAlignment-Enumeration.
Festlegen von Tabstopps
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.
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.
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)
[C#]
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);
In der folgenden Abbildung ist der tabstoppgetrennte Text dargestellt.
.png)
Im vorangehenden 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.
Zeichnen von vertikalem Text
Über ein StringFormat-Objekt können Sie festlegen, ob Text vertikal oder horizontal gezeichnet wird.
Im folgenden Beispiel wird der Wert DirectionVertical der FormatFlags-Eigenschaft eines StringFormat-Objekts zugewiesen. Dieses StringFormat-Objekt wird an die DrawString-Methode der Graphics-Klasse übergeben. Der Wert DirectionVertical ist ein Member der StringFormatFlags-Enumeration.
Dim myText As String = "Vertical text"
Dim fontFamily As New FontFamily("Lucida Console")
Dim font As New Font( _
fontFamily, _
14, _
FontStyle.Regular, _
GraphicsUnit.Point)
Dim pointF As New PointF(40, 10)
Dim stringFormat As New StringFormat()
Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
stringFormat.FormatFlags = StringFormatFlags.DirectionVertical
e.Graphics.DrawString(myText, font, solidBrush, pointF, stringFormat)
[C#]
string text = "Vertical text";
FontFamily fontFamily = new FontFamily("Lucida Console");
Font font = new Font(
fontFamily,
14,
FontStyle.Regular,
GraphicsUnit.Point);
PointF pointF = new PointF(40, 10);
StringFormat stringFormat = new StringFormat();
SolidBrush solidBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
stringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
e.Graphics.DrawString(text, font, solidBrush, pointF, stringFormat);
In der folgenden Abbildung ist der vertikale Text dargestellt.
.png)