如何将文字置于特定字符位置的中心?

时间:2016-12-18 19:42:39

标签: c# winforms text

我有一个带文字的字符串,我想以特定的字符位置为中心输出它。

有没有办法使用,例如,标签?

或者我应该更好地考虑使用GDI +绘制一个字符串来测量每个字符长度,然后手动将其绘制到我需要的位置,居中?

示例,更清楚:

字符串:“Lorem Ipsum”,位置:2。

由此,我需要以这样的方式显示字符串,即字符“r”将位于任何显示框(标签等)的中间。

1 个答案:

答案 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);
}

enter image description here

请注意,我只使用左侧部分测量。人们可以使用它们来改善对中..