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