Центрирование отдельного персонажа с DrawString

Я перепробовал все предложенные способы центрирования текста, но не могу получить желаемых результатов при центрировании отдельного персонажа.

У меня есть прямоугольник. В этом прямоугольнике я рисую круг с помощью DrawEllipse. Теперь я хочу нарисовать один символ внутри круга, используя тот же прямоугольник и DrawString, чтобы он был идеально отцентрирован.

Вот мой основной код:

StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;

using (Graphics g = Graphics.FromImage(xImage))
{
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.TextRenderingHint = TextRenderingHint.AntiAlias;
    g.CompositingQuality = CompositingQuality.HighQuality;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;

    g.FillEllipse(fillBrush, imageRect.X, imageRect.Y, imageRect.Width - 1, imageRect.Height - 1);

    g.DrawString(Text, font, Brushes.White, imageRect, stringFormat);
}

Текст центрирован по горизонтали ... но он не центрирован по вертикали. Используя симметричный символ, такой как заглавная буква «I», я обнаружил, что верхняя часть символа всегда намного ближе к краю прямоугольника, чем нижняя часть символа. Расстояние, вероятно, составляет не менее 50%.

Я предполагаю, что он измеряет достаточно места для символов, таких как строчная буква «j», которая висит ниже. Однако, поскольку я пытаюсь создать графический значок с одной буквой, я хочу более точное центрирование.

Ответы на вопрос(3)

Ваш ответ на вопрос