2013-10-28 4 views
2

Я хочу нарисовать строку в указанном прямоугольнике, но проблема в том, что строка с указанным шрифтом может находиться за пределами прямоугольника.Как масштабировать шрифт в соответствии с указанным прямоугольником

Так что я хочу способ масштабирования строкового шрифта, чтобы он соответствовал строке в указанной области прямоугольника.

public Font scaleFont(String text, RectangleF rect, Graphics graphics, Font pFont) 
     { 
      float fontSize = 20.0f; 
      Font font = pFont; 
      float width = graphics.MeasureString(text, pFont).Width; 
      float height = graphics.MeasureString(text, pFont).Height; 
      fontSize = ((rect.Width/width) * pFont.Size); 
      float heig = (rect.Height/height); 
      return new Font(pFont.FontFamily, fontSize); 
     } 

Приведенный выше код дает мне масштабируемую шрифт, чтобы соответствовать строке в верхней области прямоугольника, но я хочу, чтобы поместиться в целой области (Прикрепление из положить над алгоритмом)

Output of algo

Но Мне нужен следующий вывод.

enter image description here

+0

Другими словами, вы хотите, чтобы слова были обернуты коробкой. Я правильно понял? –

+0

@ АндрейАтапин, я уточнил вопрос. – user2528012

+0

Почему вы делаете 'Font font = pFont', а затем никогда не используете его? –

ответ

1

подгонкой во всей области вы означает, что?

enter image description here

Если да, то общий путь рисования текста на растровом изображении и фитинга один к любому объекту вы хотите.

Чтобы избежать пикселизации, вы можете использовать свой фрагмент кода для определения лучшего размера шрифта и максимального размера растрового изображения.

+0

Я думаю, что вы здесь правы. Я работаю над проектом, где мне приходилось делать такие вещи, и это была лучшая идея, с которой я столкнулся. Я использовал эту статью в качестве ориентира, и это сработало для меня. Кредит Майклу Кьюлю - вот ссылка [csharp-font-scaling] (http://tech.pro/tutorial/691/csharp-tutorial-font-scaling) –

Смежные вопросы