2

フォームウィンドウ内にリッチテキストでテーブルを表示する必要があります。これは2列のテーブルしかないため、タブはすべてを並べるために正常に機能します(RichTextBoxはRTFテーブルをサポートしていないため)。ただし、幅フォントが固定されていないためにタブストップが正しくない場合があります。

したがって、特定のフォント(Arial 10)とスペースまたはタブパッドを使用して特定の文字列のピクセル幅を測定し、すべてが整列していることを確認する方法が必要です。

Graphics.MeaureStringメソッドについては知っていますが、これはリッチテキストボックスにあるため、初期化されたPaintEventArgs変数がなく、1つの文字列を測定するためだけに作成するのはやり過ぎのようです。

MSDNから:

Private Sub MeasureStringMin(ByVal e As PaintEventArgs)

    ' Set up string.
    Dim measureString As String = "Measure String"
    Dim stringFont As New Font("Arial", 16)

    ' Measure string.
    Dim stringSize As New SizeF
    stringSize = e.Graphics.MeasureString(measureString, stringFont)

    ' Draw rectangle representing size of string.
    e.Graphics.DrawRectangle(New Pen(Color.Red, 1), 0.0F, 0.0F, _
    stringSize.Width, stringSize.Height)

    ' Draw string to screen.
    e.Graphics.DrawString(measureString, stringFont, Brushes.Black, _
    New PointF(0, 0))
End Sub

では、ダミーのPaintEventArgsインスタンスを作成するのが最善の策ですか?もしそうなら、それを行うための最良の方法は何ですか(私はこの文字列測定メソッドを数百回呼び出す必要があるので)?

また、固定幅フォントを使用する必要はありません。見栄えがよくありません。

4

1 に答える 1

1

これを使って

Dim g as Graphics = richbox.CreateGraphics()
Dim sz as SizeF = g.MeasureString(...)
于 2010-08-02T18:53:07.383 に答える