我想弄清楚如何讓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