2012-04-11 5 views
7

Próbuję dowiedzieć się, jak uzyskać widoczne linie w IWpfTextView, aby umieścić ViewPort i/lub ozdoby tekstową na podstawie widocznych linii.Jaka jest różnica między ITrackingPoint, ITrackingSpan, SnapshotPoint, SnapshotSpan, ITextViewLine i kiedy używać?

Wygląda na to, że te 4 są zaangażowane w jakiś sposób, przynajmniej w przęsła. A żeby się upewnić, że Span jest po prostu serią znaków w prawach TextView?

+0

Dobra, do mojej własnej aktualizacji. – Chris

+1

Zapomniałem zaktualizować. 1. W widokach tekstowych nie są uwzględniane linie. Dzieje się tak z powodu konturowania, zawijania wyrazów itp., Co odróżnia TextBuffer od bufora wizualnego. 2. SnapshotSpan vs SnapshotPoint - Span reprezentuje ciąg znaków. Punkt, jedna postać. 3. TrackingPoint vs TrackingSpan. Podobnie jak w innych punktach i zakresach, z wyjątkiem sytuacji, w których określa się pozycję w oknie ViewPort. Myślę, że mam rację. Lub przynajmniej wydaje się poruszać w ten sposób. – Chris

Odpowiedz

6

IWpfTextView.TextViewLines to zbiór widocznych linii. W niektórych przypadkach pierwsza i ostatnia linia może być ukryta lub częściowo widoczna (ale druga i druga do ostatnia linia powinny być zawsze w pełni widoczne). Aby uzyskać kolekcję w pełni widocznych linii, możesz użyć IWpfTextView.TextViewLines.FirstVisibleLine i IWpfTextView.TextViewLines.LastVisibleLine lub przefiltrować kolekcję przez ITextViewLine.VisibilityState == VisibilityState.FullyVisible.

A Span to struktura do zawijania pozycji początkowej i długości, ale nie zawiera faktycznego tekstu. Istnieje wiele rodzajów rozpiętości w Edytorze VS do różnych celów, na przykład SnapshotSpan jest rozpiętością od ITextSnapshot, która przechowuje pozycję początkową, długość i migawkę, do której należy.

Edit:

Niestety brakowało mi na pytanie w tytule.

A Point odnosi się do pozycji, a Span odnosi się do zakresu. Większość interfejsów API Edytora VS, które przyjmują jeden parametr, ma przeciążenie dla drugiego.

ITrackingPoint i ITrackingSpan są wyłączone z ITextBuffer. "Śledzenie" oznacza przesunięcie/powiększenie/zmniejszenie w miarę zmiany bufora tekstowego. Są migawkowe agnostyczne.

SnapshotPoint i SnapshotSpan są wyłączone z ITextSnapshot. Są one powiązane z ITextSnapshot i są niezmienne.

jest sformatowaną linią do wyświetlenia. Zazwyczaj nie trzeba go zmieniać, pobierając jedynie informacje wizualne, takie jak Height lub VisibilityState.

Powiązane problemy