Я пробовал все предложенные способы центрировать текст, но не могу получить желаемые результаты при центрировании отдельного символа.
У меня прямоугольник. В этом прямоугольнике я рисую круг с помощью 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», которая висит ниже. Однако, поскольку я пытаюсь создать графический значок с одной буквой, мне нужно более точное центрирование.