Vous pouvez utiliser TextView.GetPosition
pour récupérer la position de documents pour les coins de la vue du texte:
TextViewPosition? start = textView.GetPosition(new Point(0, 0) + textView.ScrollOffset);
TextViewPosition? end = textView.GetPosition(new Point(textView.ActualWidth, textView.ActualHeight) + textView.ScrollOffset);
Vous pouvez utiliser TextDocument.GetOffset
pour convertir un TextViewPosition en un décalage. Notez que vous pouvez retourner null
lorsqu'il n'y a pas de ligne au point spécifié - dans la zone visible, cela ne devrait se produire que si la fin de la zone visible est derrière la fin du document, donc vous devriez pouvoir supposer la fin du document dans les cas:
int startOffset = start != null ? document.GetOffset(start.Value.Location) : document.TextLength;
int endOffset = end != null ? document.GetOffset(end.Value.Location) : document.TextLength;
Cependant, si vous le souhaitez, vous pouvez également travailler directement avec les VisualLine/TextLines: VisualLine.VisualTop
vous indique où une ligne visuelle commence (coordonnée Y), et chaque TextLine dans le VisualLine a une propriété Height
. À l'aide de ceux-ci, vous pouvez déterminer les lignes de texte visibles, puis utiliser leur méthode GetCharacterHitFromDistance
pour récupérer une colonne visuelle et utiliser VisualLine.GetRelativeOffset
pour calculer le décalage de texte à partir de la colonne visuelle. (C'est ce que fait la méthode TextView.GetPosition
)
Aweseome! Maintenant, mon orthographe fonctionne parfaitement. Merci beaucoup! – zee
À titre de référence personnelle, voici un lien vers la page de référence actuelle pour 'TextView.GetPosition' dans la documentation d'AvalonEdit: http://avalonedit.net/documentation/html/070c6779-a358-33f0-09f4-7a3b49d36ee7.htm – wil