Я пытаюсь создать изображение с текстом на нем, и я хочу, чтобы размер изображения соответствовал размеру отображаемого текста.
Когда я использую System.Windows.Forms.TextRenderer.MeasureText(...)
для измерения текста, я получаю измерения, которые включают заполнение шрифтов.Когда текст отображается, он, похоже, использует тот же отступ.
Есть ли способ определить размер строки текста и затем отобразить ее без каких-либо отступов?
Это код, который я пробовал:
// Measure the text dimensions
var text = "Hello World";
var fontFamily = new Font("Arial", 30, FontStyle.Regular);
var textColor = new SolidBrush(Color.Black);
Size textSize = TextRenderer.MeasureText(text, fontFamily,
Size.Empty, TextFormatFlags.NoPadding);
// Render the text with the given dimensions
Bitmap bmp = new Bitmap(textSize.Width, textSize.Height);
Graphics g = Graphics.FromImage(bmp);
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
g.DrawString(text, fontFamily, textColor, new PointF(0, 0));
bmp.Save("output.png", ImageFormat.Png);
Это то, что в данный момент выдается:
Это то, что я хочу сделать:
Я также изучил Graphics.MeasureString(...)
, но это можно использовать только для существующего объекта Graphics
.Я хочу знать размер до создания изображения.Кроме того, вызов Graphics.MeasureString(...)
возвращает те же измерения, поэтому мне это не поможет.