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

前端之家收集整理的这篇文章主要介绍了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获取视觉信息.

猜你在找的C#相关文章