У меня есть приложение WPF, которое включает в себя TextBlock. Дело в том, что я не знаю ширину TextBlock, которая мне нужна, потому что я заранее не знаю, сколько символов в тексте будет отображаться в TextBlock. Поэтому я оцениваю ширину на основе шрифта, размера шрифта и количества символов. Вот что я делаю:
static public int SetContentWidth(int fontSizeResult, string ContentText, string fontComboBox )
{
FormattedText formattedText = new FormattedText(ContentText,
System.Globalization.CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight,
new Typeface(fontComboBox),
fontSizeResult,
Brushes.Black);
formattedText.SetFontSize((fontSizeResult + GetHorizontalSizeMultiplyer(fontSizeResult)) * (96.0 / 72.0), 0, 5);
double acwidth = formattedText.Width;
return (Int32)Math.Round(acwidth);
}
Проблема в том, что приведенный formattedText.Width всегда неверен! Например, текст «text1 text2 text3 text4 text5» сообщает ширину 373. Если я удваиваю этот текст «text1 text2 text3 text4 text5 text1 text2 text3 text4 text5", то сообщаемая ширина (должна быть двойной) равна 558 (не 746)! Что тут происходит?! Кто-нибудь может подскажите пожалуйста как рассчитать ширину текстовой строки в пикселях!
Заранее спасибо за помощь Стив