Vb.net 居中绘制的文本

Vb.net 居中绘制的文本,vb.net,center,drawstring,Vb.net,Center,Drawstring,我正在使用VB.net绘制文本: gfx.DrawString(_bText,新字体(“Tahoma”,5),笔刷。黑色,新点(25,5)) 其中gfx是使用我的控件的图形对象。x点是正确的,但我需要y是当前控件的中心(垂直)。有没有一种简单的方法可以做到这一点?您需要看看这个方法 使用它,您可以在给定的上下文中找到文本的高度。然后,您需要找到Y值以开始使用以下内容绘制文本: (ControlHeight/2) - (TextHeight/2) 使用接受StringFormat参数的DrawS

我正在使用VB.net绘制文本:

gfx.DrawString(_bText,新字体(“Tahoma”,5),笔刷。黑色,新点(25,5))

其中gfx是使用我的控件的图形对象。x点是正确的,但我需要y是当前控件的中心(垂直)。有没有一种简单的方法可以做到这一点?

您需要看看这个方法

使用它,您可以在给定的上下文中找到文本的高度。然后,您需要找到Y值以开始使用以下内容绘制文本:

(ControlHeight/2) - (TextHeight/2)

使用接受StringFormat参数的DrawString重载。将其对齐属性设置为“中心”。

文本渲染器具有垂直中心标志:

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

TextFormatFlags.VerticalCenter和HorizontalCenter可以使用OR组合。在C#中是这样的:TextFormatFlags.VerticalCenter | TextFormatFlags.horizontalcenter我在图像上绘制文本,这使我得到了比公认答案更好的结果。