我试图弄清楚如何在 IWpfTextView 中获取可见线以根据可见线放置 ViewPort 和/或文本装饰。
似乎这 4 个以某种方式参与其中,至少 Spans 是这样。为了确保我理解,Span 只是 TextView 中的一系列字符,对吗?
我试图弄清楚如何在 IWpfTextView 中获取可见线以根据可见线放置 ViewPort 和/或文本装饰。
似乎这 4 个以某种方式参与其中,至少 Spans 是这样。为了确保我理解,Span 只是 TextView 中的一系列字符,对吗?
IWpfTextView.TextViewLines
是可见线的集合。在某些情况下,第一行和最后一行可能隐藏或部分可见(但倒数第二行和倒数第二行应始终完全可见)。要获得完全可见线条的集合,您可以使用IWpfTextView.TextViewLines.FirstVisibleLine
和IWpfTextView.TextViewLines.LastVisibleLine
,或按 过滤集合ITextViewLine.VisibilityState == VisibilityState.FullyVisible
。
ASpan
是一个结构,用于包装起始位置和长度,但它不包含实际文本。VS 编辑器中有多种跨度用于不同的目的,例如 aSnapshotSpan
是 a 的跨度ITextSnapshot
,它存储起始位置、长度和它所属的快照。
编辑:
对不起,我错过了标题中的问题。
APoint
表示位置,aSpan
表示范围。大多数将一个作为参数的 VS 编辑器 API 都会对另一个进行重载。
ITrackingPoint
并且ITrackingSpan
关闭ITextBuffer
。“跟踪”意味着它们随着文本缓冲区的变化而偏移/增长/收缩。它们与快照无关。
SnapshotPoint
并且SnapshotSpan
关闭ITextSnapshot
。它们被绑定到ITextSnapshot
并且是不可变的。
ITextViewLine
是用于显示的格式化行。通常您不需要更改它,只需从中获取视觉信息,例如Height
或VisibilityState
。