avalonedit コントロールの可視テキストを取得しようとしましたが、wordwrapVisualLines[]
のみを処理しTextLines[]
、TextLine が可視領域にあるかどうかを確認する方法がわかりません。
テキストビューに表示されているテキストの開始および終了オフセット(または長さ)を取得できれば問題も解決しますが、そのような関数やメンバーが見つかりませんでした...
誰でも私を助けることができますか?どうも
avalonedit コントロールの可視テキストを取得しようとしましたが、wordwrapVisualLines[]
のみを処理しTextLines[]
、TextLine が可視領域にあるかどうかを確認する方法がわかりません。
テキストビューに表示されているテキストの開始および終了オフセット(または長さ)を取得できれば問題も解決しますが、そのような関数やメンバーが見つかりませんでした...
誰でも私を助けることができますか?どうも
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/TextLines を直接操作することもできVisualLine.VisualTop
ます。ビジュアル ラインの開始位置 (Y 座標) が示され、VisualLine 内のすべての TextLine にHeight
プロパティがあります。これらを使用して、どのテキスト行が表示されているかを判断し、そのGetCharacterHitFromDistance
メソッドを使用してビジュアル列を取得し、 を使用VisualLine.GetRelativeOffset
してビジュアル列からのテキスト オフセットを計算できます。(これはTextView.GetPosition
メソッドが行っていることです)