我有一个应用程序,该应用程序有时在Panel
控件上绘制许多圆圈。然后,我想为每个圆圈命名(只是一个字母和一个数字)。我希望文本居中,以使其看起来不错。现在,我有这样的东西:
我要做的是,我以那个圆的中心为中心,然后执行以下操作:
Graphics.DrawString($"s{i+1}", panel.Font, new SolidBrush(Color.White), pointOnCircle.X, pointOnCircle.Y);
(pointOnCircle.X and Y
是中心的坐标)。如您所见,它看起来有点糟。
我的问题是:有没有办法以某种方式计算指定字体大小和那些小圆圈半径的X和Y,以使其看起来居中?
使用接受的答案或@Johnny Mopp评论的结果:
答案 0 :(得分:3)
您需要使用DrawString
方法that takes a StringFormat
argument的重载,然后使用StringFormat.Alignment
和StringFormat.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)。您可以使用生成的大小使文本居中。