Почему C# WPF Microsoft System. Windows .Media.FormattedText сообщает о неправильной ширине текста? - PullRequest
1 голос
/ 23 апреля 2020

У меня есть приложение 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)! Что тут происходит?! Кто-нибудь может подскажите пожалуйста как рассчитать ширину текстовой строки в пикселях!

Заранее спасибо за помощь Стив

...