我正在尝试做的是在圆圈内画一个数字,使其在垂直和水平方向上居中放置。我使用相同的矩形结构绘制圆形和文本字符串,并使用中心进行水平和垂直对齐。但是,正如您从图像中看到的那样,我在白色圆圈上绘制了一条水平线,文本中心对齐基线,我的眼睛说它水平对齐到左边。
我尝试过将string.height / 2添加到矩形的顶部以将其向下移动1/2高度,但它仍然不正确。 (我调整字体大小,以便根据计数器中的位数将数字放在框中)
我该怎样才能正确地做到这一点?
var rect = new Rectangle(bmpWidth - maxCircleDiameter, bmpHeight - maxCircleDiameter, maxCircleDiameter, maxCircleDiameter);
g.FillEllipse(Brushes.White, rect);
using (var format = NewClassFactory.GetFormat(StringAlignment.Center, StringAlignment.Center, StringTrimming.Character))
g.DrawString(toDisplay, newFont, Brushes.Black, rect, format);
答案 0 :(得分:2)
您可以使用TextRenderer.DrawText
在矩形边界中绘制文本,使用颜色和字体并指定不同的文本格式标记:
var rect = new Rectangle(10, 10, 32, 32);
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.FillEllipse(Brushes.White, rect);
TextRenderer.DrawText(e.Graphics, "100", this.Font, rect, Color.Black,
TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);