Определить наибольший шрифт для заданной высоты прямоугольника (WinForms) - PullRequest
4 голосов
/ 02 октября 2009

Это обратное значение Определить размер метки на основе объема текста и размера шрифта в Winforms / C # .

Учитывая прямоугольник фиксированной высоты, но переменной ширины, существует ли эффективный способ определить наибольший размер данного шрифта, который будет помещаться в прямоугольник (по высоте) без риска потери восходящих / спусковых?

В настоящее время я рассматриваю итеративное использование MeasureString (), чтобы найти лучший размер шрифта, но не знаю, есть ли лучший способ.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Вам не нужны итерации. Так как общая ширина также пропорциональна размеру шрифта, вам нужно измерить строку один раз с любым шрифтом разумного размера. После этого вы можете рассчитать необходимый размер шрифта:

fontSizeUsedToMeasure*(RectangleWidth/MeasuredWidth)(*0.8 for a nicer fit)
2 голосов
/ 02 октября 2009

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

В WPF есть несколько более приятных опций для изменения размера текста, хотя это похоже на растирание соли в ране.

...