Nasıl yapılır: Çizilmiş Metinde Sekme Durakları Ayarlama
Bir nesnenin SetTabStops StringFormat yöntemini çağırıp bu nesneyi sınıfının yöntemine DrawString geçirerek StringFormat metin için sekme durakları Graphics ayarlayabilirsiniz.
Not
System.Windows.Forms.TextRenderer, çizilmiş metne sekme durakları eklemeyi desteklemez, ancak bayrağını kullanarak TextFormatFlags.ExpandTabs mevcut sekme duraklarını genişletebilirsiniz.
Örnek
Aşağıdaki örnek, sekme duraklarını 150, 250 ve 350 olarak ayarlar. Ardından kod, adların ve test puanlarının sekmeli bir listesini görüntüler.
Aşağıdaki çizimde sekmeli metin gösterilmektedir:
Aşağıdaki kod yöntemine SetTabStops iki bağımsız değişken geçirir. İkinci bağımsız değişken, sekme uzaklıklarını içeren bir dizidir. geçirilen SetTabStops ilk bağımsız değişken 0'dır ve bu da dizideki ilk uzaklık değerinin sınırlayıcı dikdörtgenin sol kenarı olan 0 konumundan ölçüldüğünü gösterir.
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)
Kod Derleniyor
- Yukarıdaki örnek, Windows Forms ile kullanılmak üzere tasarlanmıştır ve parametresi PaintEventHandlerolan öğesini gerektirir.PaintEventArgs
e
Ayrıca bkz.
.NET Desktop feedback