我有一个包含文本的字符串,我想以特定字符位置为中心输出它。
有没有办法使用标签来做到这一点?
还是我应该考虑使用GDI +测量每个字符的长度来绘制字符串,然后在需要的地方手动居中绘制?
例子,更清楚:
字符串:“ lorem ipsum”位置:2。
由此,我需要以这样的方式显示字符串,即字符“ r”将位于任何显示框(标签等)的中间。
这是一个定位功能,应该会有所帮助:
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);
}
请注意,我仅使用左侧部分的尺寸。一个人可以同时使用两者来优化居中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句