2012-04-11 20 views
7

Tôi đang cố gắng tìm ra cách để có được các dòng hiển thị trong một IWpfTextView để đặt ViewPort và/hoặc Text Adornment dựa trên các dòng hiển thị.Sự khác nhau giữa ITrackingPoint, ITrackingSpan, SnapshotPoint, SnapshotSpan, ITextViewLine và thời điểm sử dụng là gì?

Dường như 4 thẻ này có liên quan theo một cách nào đó, ít nhất là Spans. Và để chắc chắn rằng tôi hiểu, một Span chỉ là một loạt các nhân vật trong TextView phải không?

+0

Được rồi, để cập nhật của riêng tôi. – Chris

+1

Quên để thực sự cập nhật. 1. TextViews không được suy nghĩ theo dòng. Điều này là do phác thảo, bọc từ, vv khác với TextBuffer từ bộ đệm trực quan. 2. SnapshotSpan vs SnapshotPoint - Span đại diện cho một chuỗi các ký tự. Điểm, một ký tự. 3. TrackingPoint vs TrackingSpan. Tương tự như Point và Span khác, ngoại trừ được sử dụng để xác định vị trí trong ViewPort. Tôi nghĩ rằng tôi là chính xác về những điều này. Hoặc ít nhất dường như đang di chuyển theo cách đó. – Chris

Trả lời

6

IWpfTextView.TextViewLines là tập hợp các dòng hiển thị. Trong một số trường hợp, dòng đầu tiên và cuối cùng có thể bị ẩn hoặc hiển thị một phần (nhưng dòng thứ 2 và thứ 2 đến cuối cùng phải luôn luôn hiển thị đầy đủ). Để có được bộ sưu tập các dòng hiển thị đầy đủ, bạn có thể sử dụng IWpfTextView.TextViewLines.FirstVisibleLineIWpfTextView.TextViewLines.LastVisibleLine hoặc lọc bộ sưu tập theo ITextViewLine.VisibilityState == VisibilityState.FullyVisible.

A Span là cấu trúc để bao quanh vị trí bắt đầu và độ dài nhưng không giữ văn bản thực. Có nhiều loại nhịp trong VS Editor cho các mục đích khác nhau, ví dụ: SnapshotSpan là khoảng cách của một số ITextSnapshot, lưu trữ vị trí bắt đầu, độ dài và ảnh chụp nhanh.

Edit:

Xin lỗi tôi bỏ lỡ câu hỏi trong tiêu đề.

A Point đề cập đến một vị trí và Span là phạm vi. Hầu hết các API của VS Editor có tham số là một tham số có quá tải cho các tham số khác.

ITrackingPointITrackingSpan tắt số ITextBuffer. "Theo dõi" có nghĩa là chúng bù đắp/tăng/thu nhỏ khi thay đổi bộ đệm văn bản. Họ là bất khả tri chụp nhanh.

SnapshotPointSnapshotSpan tắt số ITextSnapshot. Chúng được gắn với ITextSnapshot và không thay đổi.

ITextViewLine là dòng được định dạng để hiển thị. Thông thường, bạn không cần phải thay đổi nó, chỉ nhận được thông tin trực quan từ nó như Height hoặc VisibilityState.

Các vấn đề liên quan