我有一个带文字的字符串,我想以特定的字符位置为中心输出它。
有没有办法使用,例如,标签?
或者我应该更好地考虑使用GDI +绘制一个字符串来测量每个字符长度,然后手动将其绘制到我需要的位置,居中?
示例,更清楚:
字符串:“Lorem Ipsum”,位置:2。
由此,我需要以这样的方式显示字符串,即字符“r”将位于任何显示框(标签等)的中间。
答案 0 :(得分:2)
这是一个应该有用的定位功能:
void positionTo(Label lbl, Panel pan, int pos)
{
SizeF sz0, sz1, sz2;
sz0 = sz1 = sz2 = Size.Empty;
using (Graphics g = lbl.CreateGraphics())
{
StringFormat sf = StringFormat.GenericTypographic;
sz0 = g.MeasureString(lbl.Text, lbl.Font, pan.Width, sf);
sz1 = g.MeasureString(lbl.Text.Substring(0, pos), lbl.Font, pan.Width, sf);
sz2 = g.MeasureString(lbl.Text.Substring(pos), lbl.Font, pan.Width, sf);
}
lbl.Left = (int)(pan.Width / 2 - sz1.Width);
}
请注意,我只使用左侧部分测量。人们可以使用它们来改善对中..