как получить высоту содержимого расширенного текста после переноса слов? - PullRequest
2 голосов
/ 07 мая 2010

Вопрос А.

Дано

  1. Строка в формате расширенного текста, которая может содержать абзац, табуляции, пробел, разрыв строки, отступ, (или даже изображение?)
  2. Ширина для переноса по словам текста в редакторе / редакторе

Как узнать высоту содержимого после выполнения переноса всех слов? Есть ли что-то вроде

int MeasureRichTextHeightAfterWordWrap (строка aRichTextContent, int aWidth)?

В противном случае, как эти элементы управления форматированным текстом узнают, сколько нужно изменить размер?

Должен ли я на самом деле размещать содержимое на фиктивном элементе управления форматированным текстом, устанавливать его ширину и получать его высоту с помощью GetPositionFromCharIndex (TextLength-1) впоследствии? Хотя это работает, это кажется "расточительным"

Вопрос Б. Если я нарисую простой текст на заметку / контроль / редактор в виде простого текста и вручную нарисовать строку с вычисленными вручную отступами, переносами, переносами слов, чтобы притвориться RTF.

Это проще или сложнее?

Отредактировано, чтобы сделать его более понятным и извините, если мой английский выглядит как студент, потому что это не мой родной язык.

1 Ответ

1 голос
/ 07 мая 2010

Извините за мою неудачную первую попытку ответа. Я DID нашел ответ для измерения внутри RichTextBox. Очевидно, вы должны использовать вызовы Win32 GDI API.

http://www.tech -archive.net / Архив / DotNet / microsoft.public.dotnet.framework.windowsforms.controls / 2004-09 / 0574.html

Я нашел это, изменив свой поиск после прохождения через этот слепок, что объясняет, почему нет чистого .NET способа сделать это:

http://www.developmentnow.com/g/38_2005_10_0_0_626243/I-dont-believe-this-code-gives-the-correct-RichTextBox-string-size.htm

...