Страницы

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

суббота, 8 июня 2019 г.

Как измерить размер текста в 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;
Этот способ возвращает размер текстбокса, а нужна именно длина текста. Ничего другого не нашел.


Ответ

Решение простое — нужно создать на основе вашего текста геометрию и просто посмотреть ее границы:
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}");


Полный код примера. Разметка:


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

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