我尝试了所有建议的方法来居中文本,但在居中单个字符时似乎无法得到想要的结果。
我有一个矩形。在这个矩形里,我用DrawEllipse画了一个圆。现在我想使用同一个矩形和DrawString来画一个单独的字符,以使其完全居中。
这是我的基本代码:
文本水平居中了...但垂直居中不正确。使用一个对称的字符,如大写字母 "I",我发现字符的上部总是比矩形边缘更靠近,而字符的底部则不是。距离可能增加了至少 50%。
我认为它是在测量像小写字母 "j" 这样下垂的字符所需的足够空间。然而,由于我正在尝试创建一个只有一个字母的图标,我需要更精确的居中。
我有一个矩形。在这个矩形里,我用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" 这样下垂的字符所需的足够空间。然而,由于我正在尝试创建一个只有一个字母的图标,我需要更精确的居中。