W∴ Balboos, GHB
Вы также включили в это C# (возможно, это относится к ASP.NET?):
Используйте функцию для GetTextExtent, которая применяется к вашему объекту string. Начните с максимального желаемого размера шрифта. Если экстент слишком велик, сожмите шрифт и измерьте еще раз. Делайте это в цикле до тех пор, пока шрифт не станет достаточно маленьким, чтобы соответствовать выделенному пространству.
M. Daban
это выглядит хорошо, но не могли бы вы объяснить, как им пользоваться, пожалуйста?
W∴ Balboos, GHB
Я использовал это (C++.NET, 2D Graphics - C# почти идентичен) для масштабирования шрифта, чтобы заголовок всегда помещался и заполнял верхнюю строку страницы.
Вам нужно знать, какой длины будет текст, который вы хотите поместить на свою кнопку. В зависимости от контекста существует метод, который можно использовать для измерения длины строкового объекта, например, для печати. При этом учитывается используемый шрифт. Что я делаю, так это измеряю длину строки (процедура getTextExtent) и смотрю, соответствует ли она ширине страницы (или, в вашем случае, кнопке). Если он слишком большой, я создаю шрифт меньшего размера, чтобы применить его к объекту, и продолжаю уменьшать шрифт, пока объект не станет достаточно маленьким. Это дает наилучшую возможную посадку.
Но этот метод требует некоторой работы.
Предложение Винода джангла менее изящно, но гораздо проще. Он предназначен для HTML-страниц. Вы можете сделать то же самое для любого языка, но подгонка будет только иногда оптимальной.
Другая возможность: если вы используете моноширинный шрифт, то буквы и интервалы будут постоянными. Если вы получаете ширину символа для используемого вами моноширинного шрифта, вы можете вычислить длину строки как ширину символа * количество символов. Сохраните небольшую таблицу ширины символов для каждого размера шрифта, который вы хотите использовать, а затем разделите доступное пространство на количество символов для приблизительного значения ширины символов.
Множество решений-вы меняете простоту на точность, когда выбираете метод.