Можно ли определить точный размер шрифта при рисовании текста с помощью GDI+?

Я использую следующий код для рисования текста на растровом изображении:

using (Font font = new Font("Arial", 10.0f, FontStyle.Bold, GraphicsUnit.Point))
{
    //draw the text
    graphics.DrawString("Some text", font, Brushes.White, rect, stringFormat);
}

Это работает хорошо. Вот отрендеренный текст:

enter image description here

Я хочу сделать текст немного больше.Если я установлю размер шрифта 11, вот что я получу:

enter image description here

Это слишком большой размер для того, что я хочу. Я пробовал 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);          
}
7
задан tigrou 31 May 2012 в 16:32
поделиться