我已经尝试了所有的建议的方式来居中文本,但我似乎无法得到我想要的,而中心的个性效果.
我有一个矩形.在那个矩形中,我用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);
}
文本水平居中……但它没有正确地居中.使用对称字符像一个大写的“我”,我发现性格的顶部总是更近于矩形的性格比底部的边缘.距离可能至少增加50%.
我假设它正在为字符测量足够的空间,比如小写的“j”,它会挂得更低.但是,由于我试图用单个字母创建一个图形图标,我想要更精确的居中.