Я использую следующий код для рисования текста на растровом изображении:
using (Font font = new Font("Arial", 10.0f, FontStyle.Bold, GraphicsUnit.Point))
{
//draw the text
graphics.DrawString("Some text", font, Brushes.White, rect, stringFormat);
}
Это работает хорошо. Вот отрендеренный текст:
Я хочу сделать текст немного больше.Если я установлю размер шрифта 11, вот что я получу:
Это слишком большой размер для того, что я хочу. Я пробовал 10.25, 10.5 и подобные, но они дают тот же результат, что и 10.
Я также пытаюсь установить для GraphicsUnit
значение Pixel
, но он ведет себя так же (нет возможности установить пользовательский шрифт). размер).
Вот мой вопрос:
При рисовании текста с помощью GDI+ (C#) есть ли возможность «точной настройки» размера отображаемого текста?
РЕДАКТИРОВАТЬ: более полный фрагмент кода (по запросу):
using (Bitmap bitmap = new Bitmap(width, height))
using (Graphics graphics = Graphics.FromImage(bitmap))
using (Font font = new Font("Arial", 10.0f, FontStyle.Bold, GraphicsUnit.Point))
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
Rectangle rect = new Rectangle(0, 0, width, height);
//method 1
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
graphics.DrawString("Some text", font, Brushes.White, rect, stringFormat);
//method 2
TextFormatFlags flags = TextFormatFlags.HorizontalCenter |
TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;
TextRenderer.DrawText(graphics, "Some text", font, rect, Color.White, flags);
bitmap.Save(stream, ImageFormat.Png);
}