7

IWpfTextViewで表示されている線を取得して、表示されている線に基づいてビューポートやテキスト装飾を配置する方法を理解しようとしています。

これらの4つは、少なくともスパンに何らかの形で関与しているようです。そして、私が理解していることを確認するために、スパンはTextViewの一連の文字ですよね?

4

1 に答える 1

7

IWpfTextView.TextViewLines目に見える線のコレクションです。場合によっては、最初と最後の行が非表示または部分的に表示されることがあります(ただし、2番目と最後から2番目の行は常に完全に表示される必要があります)。完全に表示される線のコレクションを取得するには、IWpfTextView.TextViewLines.FirstVisibleLineとを使用するIWpfTextView.TextViewLines.LastVisibleLineか、コレクションをでフィルタリングしITextViewLine.VisibilityState == VisibilityState.FullyVisibleます。

ASpanは開始位置と長さをラップする構造体ですが、実際のテキストは保持しません。VS Editorには、さまざまな目的のためにさまざまな種類のスパンがあります。たとえば、aは、開始位置、長さ、およびそれが属するスナップショットを格納するSnapshotSpanのスパンです。ITextSnapshot

編集:

申し訳ありませんが、タイトルの質問を見逃しました。

APointは位置を示し、aSpanは範囲を示します。一方をパラメーターとして受け取るほとんどのVSエディターAPIには、もう一方のオーバーロードがあります。

ITrackingPointITrackingSpanオフですITextBuffer。「追跡」とは、テキストバッファの変更に応じてオフセット/拡大/縮小することを意味します。それらはスナップショットに依存しません。

SnapshotPointSnapshotSpanオフですITextSnapshot。それらはにバインドされてITextSnapshotおり、不変です。

ITextViewLine表示用にフォーマットされた行です。通常、変更する必要はありません。Heightまたはのように視覚的な情報を取得するだけVisibilityStateです。

于 2012-06-18T23:47:44.010 に答える