c# – ITrackingPoint,ITrackingSpan,SnapshotPoint,SnapshotSpan,ITextViewLine和何时使用有什么区别?

我正在试图找出如何在I WpfTextView中获取可见行以基于可见线放置ViewPort和/或文本装饰.

似乎这4个涉及某种方式,至少是Spans.为了确保我理解,Span只是TextView中的一系列字符吗?

解决方法

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

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

编辑:

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

Point指的是一个位置,Span指的是一个范围.以参数为参数的大多数VS Editor API都会为另一个提供过载.

ITrackingPoint和ITrackingSpan不属于ITextBuffer. “跟踪”意味着它们随着文本缓冲区的变化而偏移/增大/缩小.它们是快照不可知的.

SnapshotPoint和SnapshotSpan不在ITextSnapshot中.它们绑定到ITextSnapshot并且是不可变的.

ITextViewLine是用于显示的格式化行.通常您不需要更改它,只需从Height或VisibilityState获取视觉信息.

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么