我需要在表单窗口中以富文本格式显示表格。它只是一个两列的表,因此使用制表符可以很好地排列所有内容(因为 RichTextBox 不支持 RTF 表)。但是,有时制表位不正确,因为字体不固定。
因此,我需要一种方法来测量具有特定字体(Arial 10)和空格或制表符的特定字符串的像素宽度,以确保一切都对齐。
我知道 Graphics.MeaureString 方法,但由于它位于富文本框中,因此我没有初始化的 PaintEventArgs 变量,而且创建只是为了测量一个字符串似乎有点过头了。
来自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 实例吗?如果是这样,最好的方法是什么(因为我必须调用这种字符串测量方法数百次)?
另外,我真的不想使用固定宽度的字体——它们只是看起来不太好。