Страницы

Поиск по вопросам

вторник, 31 марта 2020 г.

Как измерить размер текста в WPF?

#c_sharp #wpf


Как измерить размер текста в текстбоксе от края первой буквы до края последней? 

FormattedText formattedText = new FormattedText(str, CultureInfo.GetCultureInfo("en-us-ru"),
FlowDirection.LeftToRight, new Typeface(this.Name_textBox.FontFamily, this.Name_textBox.FontStyle,
this.Name_textBox.FontWeight, this.Name_textBox.FontStretch), Name_textBox.FontSize,
Brushes.Black);

double width = formattedText.Width; 


Этот способ возвращает размер текстбокса, а нужна именно длина текста. Ничего другого
не нашел.


    


Ответы

Ответ 1



Решение простое — нужно создать на основе вашего текста геометрию и просто посмотреть ее границы: var dpiX = 96.0 * VisualTreeHelper.GetDpi(this).DpiScaleX; var formattedText = new FormattedText( MyTextBox.Text, CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface( MyTextBox.FontFamily, MyTextBox.FontStyle, MyTextBox.FontWeight, MyTextBox.FontStretch), MyTextBox.FontSize, Brushes.Black, dpiX); var geometry = formattedText.BuildGeometry(new Point()); var bounds = geometry.Bounds; MessageBox.Show($"{bounds.Width}"); Полный код примера. Разметка:

Комментариев нет:

Отправить комментарий