在椭圆的中间绘制文本

时间:2018-10-10 16:59:17

标签: c# winforms drawstring

我有一个应用程序,该应用程序有时在Panel控件上绘制许多圆圈。然后,我想为每个圆圈命名(只是一个字母和一个数字)。我希望文本居中,以使其看起来不错。现在,我有这样的东西:

enter image description here

我要做的是,我以那个圆的中心为中心,然后执行以下操作:

Graphics.DrawString($"s{i+1}", panel.Font, new SolidBrush(Color.White), pointOnCircle.X, pointOnCircle.Y);

pointOnCircle.X and Y是中心的坐标)。如您所见,它看起来有点糟。

我的问题是:有没有办法以某种方式计算指定字体大小和那些小圆圈半径的X和Y,以使其看起来居中?

使用接受的答案或@Johnny Mopp评论的结果:

enter image description here

2 个答案:

答案 0 :(得分:3)

您需要使用DrawString方法that takes a StringFormat argument的重载,然后使用StringFormat.AlignmentStringFormat.LineAlignment将字符串在圆心和圆心对齐:

using (StringFormat sf = new StringFormat())
{
    sf.Alignment = StringAlignment.Center;
    sf.LineAlignment = StringAlignment.Center;

    Graphics.DrawString($"s{i + 1}", panel.Font, new SolidBrush(Color.White),
                        pointOnCircle.X, pointOnCircle.Y, sf);
}

答案 1 :(得分:1)

使用Graphics.MeasureString获取指定字体的字符串大小(X和Y)。您可以使用生成的大小使文本居中。