C#Winforms。在矩形

时间:2016-07-17 10:38:50

标签: c# winforms graphics

我正在尝试做的是在圆圈内画一个数字,使其在垂直和水平方向上居中放置。我使用相同的矩形结构绘制圆形和文本字符串,并使用中心进行水平和垂直对齐。但是,正如您从图像中看到的那样,我在白色圆圈上绘制了一条水平线,文本中心对齐基线,我的眼睛说它水平对齐到左边。

我尝试过将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);

enter image description here

1 个答案:

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