テキストを中央に配置するために提案されたすべての方法を試しましたが、個々の文字を中央に配置する際に必要な結果が得られないようです.
私は長方形を持っています。その長方形に、DrawEllipse で円を描いています。今度は、同じ四角形と DrawString を使用して円の内側に 1 つの文字を描画し、完全に中央に配置します。
これが私の基本的なコードです:
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」のような文字が下にぶら下がっているのに十分なスペースを測定していると思います。ただ、一文字でグラフィカルなアイコンを作ろうとしているので、もっと正確なセンタリングが欲しいです。