Центр нарисованного текста - PullRequest
3 голосов
/ 31 октября 2011

Я рисую текст на VB.net, используя:

gfx.DrawString(_bText, New Font("Tahoma", 5), Brushes.Black, New Point(25, 5))

, где gfx - графический объект с использованием моего элемента управления.Точка x верна, но мне нужно, чтобы y был центром текущего элемента управления (по вертикали).Есть ли простой способ сделать это?

Ответы [ 3 ]

3 голосов
/ 31 октября 2011

Вам нужно взглянуть на Graphics.MeasureString метод

Используя это, вы можете найти высоту вашего текста в контексте, который вы ему даете. Затем вам нужно найти значение Y, чтобы начать рисовать текст, используя что-то вроде этого:

(ControlHeight/2) - (TextHeight/2)
2 голосов
/ 31 октября 2011

Используйте перегрузку DrawString, которая принимает аргумент StringFormat.Установите для свойства Alignment значение Center.

1 голос
/ 31 октября 2011

TextRenderer имеет флаг VerticalCenter:

Dim r As New Rectangle(25, 0, myControl.ClientSize.Width - 25, _
                              myControl.ClientSize.Height)

Using myFont As New Font("Tahoma", 5)
  TextRenderer.DrawText(gfx, _bText, myFont, r, _
                        Color.Black, Color.Empty, _
                        TextFormatFlags.VerticalCenter)
End Using
...