Share via


Nasıl yapılır: Çizilmiş Metinde Sekme Durakları Ayarlama

Bir nesnenin SetTabStopsStringFormat 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.

Dekont

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:

Screenshot that shows a tabbed list of names and scores.

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

Ayrıca bkz.