gpt4 book ai didi

c# - AvalonEdit - 可见文本

转载 作者:行者123 更新时间:2023-11-30 15:46:57 24 4
gpt4 key购买 nike

我尝试获取 avalonedit 控件的可见文本,但 VisualLines[] 仅使用 TextLines[] 处理自动换行,我不知道如何检查是否TextLine是否在可见区域。

如果我可以在 TextView 中获取可见文本的开始和结束偏移量(或长度)但我没有找到这样的函数或成员...,问题也会得到解决...

谁能帮帮我?谢谢

最佳答案

您可以使用 TextView.GetPosition 检索 TextView 角的文档位置:

TextViewPosition? start = textView.GetPosition(new Point(0, 0) + textView.ScrollOffset);
TextViewPosition? end = textView.GetPosition(new Point(textView.ActualWidth, textView.ActualHeight) + textView.ScrollOffset);

您可以使用 TextDocument.GetOffset 将 TextViewPosition 转换为偏移量。请注意,当指定点没有行时,您可以返回 null - 在可见区域内,只有当可见区域的末尾位于文档末尾之后时才会发生这种情况,因此您在这些情况下应该能够假定文档的结尾:

int startOffset = start != null ? document.GetOffset(start.Value.Location) : document.TextLength;
int endOffset = end != null ? document.GetOffset(end.Value.Location) : document.TextLength;

但是,如果您愿意,也可以直接使用 VisualLine/TextLines:VisualLine.VisualTop 告诉您视线从哪里开始(Y 坐标),并且 VisualLine 中的每个 TextLine 都有Height 属性。使用这些,您可以确定哪些文本行是可见的,然后使用它们的 GetCharacterHitFromDistance 方法检索可视列,并使用 VisualLine.GetRelativeOffset 计算文本与可视列的偏移量柱子。 (这就是 TextView.GetPosition 方法所做的)

关于c# - AvalonEdit - 可见文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com