M. Daban Ответов: 2

Как изменить размер шрифта, чтобы он соответствовал размеру кнопки


У меня есть кнопка asp с фиксированным размером.
во время выполнения я устанавливаю текст кнопки. текст может быть коротким или длинным.
Если текст короткий, я хочу, чтобы размер шрифта кнопки был больше, чтобы соответствовать размеру кнопки
а когда текст длинный я хочу чтобы размер шрифта был меньше
Я использовал css для обертывания длинного текста в несколько строк, но он не показывает весь длинный текст. поэтому размер шрифта должен быть меньше.

Какой-нибудь совет?

Что я уже пробовал:

<style type="text/css">

   .wrap { white-space: normal; Font-Size:large ; Width:100px; Height: 50px; }

   </style>


<asp:Button ID="btnCat1" runat="server" Text="Button"  
                             OnClick="catClick"  CssClass="wrap"  />

2 Ответов

Рейтинг:
18

W∴ Balboos, GHB

Вы также включили в это C# (возможно, это относится к ASP.NET?):

Используйте функцию для GetTextExtent, которая применяется к вашему объекту string. Начните с максимального желаемого размера шрифта. Если экстент слишком велик, сожмите шрифт и измерьте еще раз. Делайте это в цикле до тех пор, пока шрифт не станет достаточно маленьким, чтобы соответствовать выделенному пространству.


M. Daban

это выглядит хорошо, но не могли бы вы объяснить, как им пользоваться, пожалуйста?

W∴ Balboos, GHB

Я использовал это (C++.NET, 2D Graphics - C# почти идентичен) для масштабирования шрифта, чтобы заголовок всегда помещался и заполнял верхнюю строку страницы.

Вам нужно знать, какой длины будет текст, который вы хотите поместить на свою кнопку. В зависимости от контекста существует метод, который можно использовать для измерения длины строкового объекта, например, для печати. При этом учитывается используемый шрифт. Что я делаю, так это измеряю длину строки (процедура getTextExtent) и смотрю, соответствует ли она ширине страницы (или, в вашем случае, кнопке). Если он слишком большой, я создаю шрифт меньшего размера, чтобы применить его к объекту, и продолжаю уменьшать шрифт, пока объект не станет достаточно маленьким. Это дает наилучшую возможную посадку.

Но этот метод требует некоторой работы.

Предложение Винода джангла менее изящно, но гораздо проще. Он предназначен для HTML-страниц. Вы можете сделать то же самое для любого языка, но подгонка будет только иногда оптимальной.

Другая возможность: если вы используете моноширинный шрифт, то буквы и интервалы будут постоянными. Если вы получаете ширину символа для используемого вами моноширинного шрифта, вы можете вычислить длину строки как ширину символа * количество символов. Сохраните небольшую таблицу ширины символов для каждого размера шрифта, который вы хотите использовать, а затем разделите доступное пространство на количество символов для приблизительного значения ширины символов.

Множество решений-вы меняете простоту на точность, когда выбираете метод.

Рейтинг:
1

Vinod Jangle

Вы можете иметь 2 класса css с малым и большим размером шрифта и можете попробовать, как показано ниже

Button1.Text = "SET_YOUR_BUTTON_TEXT";    
//you can check something like to see if text length is more..
Button1.CssClass = Button1.Text.Length > 10 ? "btnSmall" : "btnBig";