7

我试图弄清楚如何在 IWpfTextView 中获取可见线以根据可见线放置 ViewPort 和/或文本装饰。

似乎这 4 个以某种方式参与其中,至少 Spans 是这样。为了确保我理解,Span 只是 TextView 中的一系列字符,对吗?

4

1 回答 1

7

IWpfTextView.TextViewLines是可见线的集合。在某些情况下,第一行和最后一行可能隐藏或部分可见(但倒数第二行和倒数第二行应始终完全可见)。要获得完全可见线条的集合,您可以使用IWpfTextView.TextViewLines.FirstVisibleLineIWpfTextView.TextViewLines.LastVisibleLine,或按 过滤集合ITextViewLine.VisibilityState == VisibilityState.FullyVisible

ASpan是一个结构,用于包装起始位置和长度,但它不包含实际文本。VS 编辑器中有多种跨度用于不同的目的,例如 aSnapshotSpan是 a 的跨度ITextSnapshot,它存储起始位置、长度和它所属的快照。

编辑:

对不起,我错过了标题中的问题。

APoint表示位置,aSpan表示范围。大多数将一个作为参数的 VS 编辑器 API 都会对另一个进行重载。

ITrackingPoint并且ITrackingSpan关闭ITextBuffer。“跟踪”意味着它们随着文本缓冲区的变化而偏移/增长/收缩。它们与快照无关。

SnapshotPoint并且SnapshotSpan关闭ITextSnapshot。它们被绑定到ITextSnapshot并且是不可变的。

ITextViewLine是用于显示的格式化行。通常您不需要更改它,只需从中获取视觉信息,例如HeightVisibilityState

于 2012-06-18T23:47:44.010 回答