我想弄清楚如何让IWpfTextView中的可见线放置基于可见线的ViewPort和/或文本装饰。ITrackingPoint,ITrackingSpan,SnapshotPoint,SnapshotSpan,ITextViewLine和何时使用有什么区别?
看来,这4个参与方式,至少是斯潘斯。为了确保我理解,Span只是TextView中的一系列字符?
我想弄清楚如何让IWpfTextView中的可见线放置基于可见线的ViewPort和/或文本装饰。ITrackingPoint,ITrackingSpan,SnapshotPoint,SnapshotSpan,ITextViewLine和何时使用有什么区别?
看来,这4个参与方式,至少是斯潘斯。为了确保我理解,Span只是TextView中的一系列字符?
IWpfTextView.TextViewLines
是可见行的集合。在某些情况下,第一行和最后一行可能隐藏或部分可见(但第二行和倒数第二行应始终完全可见)。要获得完全可见的行的集合,您可以使用IWpfTextView.TextViewLines.FirstVisibleLine
和IWpfTextView.TextViewLines.LastVisibleLine
,或者通过ITextViewLine.VisibilityState == VisibilityState.FullyVisible
过滤集合。
A Span
是一个结构来包装起始位置和长度,但它不包含实际的文本。 VS编辑器中有多种跨度用于不同的用途,例如SnapshotSpan
是从ITextSnapshot
开始的跨度,它存储起始位置,长度和它所属的快照。
编辑:
对不起,我错过了在标题中的问题。
A Point
指的是一个位置,Span
指的是一个范围。大多数采用一个参数的VS编辑器API对另一个有重载。
ITrackingPoint
和ITrackingSpan
关闭ITextBuffer
。 “跟踪”意味着它们随着文本缓冲区的改变而抵消/增大/缩小。它们是快照不可知的。
SnapshotPoint
和SnapshotSpan
关闭ITextSnapshot
。他们被绑定到ITextSnapshot
并且是不可变的。
ITextViewLine
是用于显示的格式化行。通常你不需要改变它,只从Height
或VisibilityState
获得视觉信息。
好吧,我自己更新。 – Chris 2012-04-11 20:18:08
忘了实际更新。 1. TextViews不被认为是行。这是因为大纲,文字换行等不同于TextBuffer与可视缓冲区。 2. SnapshotSpan vs SnapshotPoint - Span代表一串字符。点,一个字符。 3. TrackingPoint vs TrackingSpan。与其他Point和Span类似,除了用于确定ViewPort中的位置。 我想我对这些都是正确的。或者至少似乎是这样。 – Chris 2012-05-06 13:40:35