서식 창이있는 서식있는 텍스트로 표를 표시해야합니다. 그것은 단지 두 개의 열 테이블이므로 탭 기능은 RTF 테이블을 지원하지 않기 때문에 모든 라인을 잘 처리합니다 (RichTextBox는 RTF 테이블을 지원하지 않기 때문에). 그러나 고정되지 않은 너비 글꼴로 인해 탭 중지가 잘못된 경우가 있습니다.컨트롤을 측정하지 않고 VB.net에서 글꼴 너비 가져 오기?
그래서 모든 글꼴이 정렬되도록 특정 글꼴 (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 인스턴스를 만들 수있는 가장 좋은 방법입니까? 그렇다면, 나는 이것을 행하는 가장 좋은 방법은 무엇인가? (나는이 문자열 측정 방법을 수백 번 호출해야하기 때문에)?
또한 고정 폭 글꼴을 사용하고 싶지는 않습니다. 글꼴이 좋지는 않습니다.
- 정말 고마워. –