我正在尝试按其文字基线对齐Label
和NumericUpDown
。我是用代码而不是设计师来做的。如何获得文本基线的位置?
答案 0 :(得分:14)
//在坐标(pt.X,pt.Y)处渲染带有基线的文本:
Font myFont = Label1.Font;
FontFamily ff = myFont.FontFamily;
float lineSpace = ff.GetLineSpacing(myFont.Style);
float ascent = ff.GetCellAscent(myFont.Style);
float baseline = myFont.GetHeight(ev.Graphics) * ascent / lineSpace;
PointF renderPt = new PointF(pt.X, pt.Y - baseline));
ev.Graphics.DrawString("Render this string", myFont, textBrush, renderPt);
答案 1 :(得分:2)
对于Label控件,您可以通过以下方式获取文本底部的位置:
假设.TextAlign设置为TopLeft或TopCenter或TopRight,可以通过此方法找到Label控件中文本的底部:
dim btmOfText as single
btmOfText = Label1.Font.GetHeight + Label1.Top
.GetHeight方法返回Label使用的当前字体的高度(以像素为单位) 如果.TextAlign是Middle或Bottom,那么您需要进行稍微复杂的计算。
这个方法也适用于NumericUpDown控件。