2010-10-21 2 views
3

Я пытаюсь получить видимый текст элемента управления avalonedit, но VisualLines[] обрабатывает только wordwrap с помощью TextLines[], и я не знаю, как проверить, находится ли TextLine в видимой области или нет.AvalonEdit - Видимый текст

проблема также будет решена, если я могу получить Пуск- и endoffset (или длину) видимого текста в TextView, но я не нашел такую ​​функцию или член ...

Может кто-нибудь мне помочь ? Thx

ответ

4

Вы можете использовать TextView.GetPosition для извлечения позиции документа для углов зрения текста:

TextViewPosition? start = textView.GetPosition(new Point(0, 0) + textView.ScrollOffset); 
TextViewPosition? end = textView.GetPosition(new Point(textView.ActualWidth, textView.ActualHeight) + textView.ScrollOffset); 

Вы можете использовать TextDocument.GetOffset для преобразования TextViewPosition в смещение. Обратите внимание, что вы можете вернуться null, когда в указанной точке нет строки - в пределах видимой области, которая должна произойти только в том случае, если конец видимой области находится за концом документа, поэтому вы должны иметь возможность предположить конец документа в тех случаях:

int startOffset = start != null ? document.GetOffset(start.Value.Location) : document.TextLength; 
int endOffset = end != null ? document.GetOffset(end.Value.Location) : document.TextLength; 

Однако, если вы хотите, вы можете также работать непосредственно с VisualLine/объектов TextLine: VisualLine.VisualTop говорит вам, где начинается визуальная линия (Y координат), и каждый TextLine в пределах VisualLine имеет свойство Height. Используя их, вы можете определить, какие текстовые строки видны, а затем использовать их метод GetCharacterHitFromDistance для извлечения визуального столбца и использовать VisualLine.GetRelativeOffset для вычисления смещения текста из визуального столбца. (это то, что делает TextView.GetPosition способ)

+0

Aweseome! Теперь мой инструмент проверки орфографии работает отлично. Большое спасибо! – zee

+0

В качестве личной ссылки здесь приведена ссылка на текущую ссылочную страницу для «TextView.GetPosition» в документации AvalonEdit: http://avalonedit.net/documentation/html/070c6779-a358-33f0-09f4-7a3b49d36ee7.htm – wil

Смежные вопросы