gpt4 book ai didi

c# - 对 FormattedText 执行 HitTest 的好方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:32 25 4
gpt4 key购买 nike

我正在使用 FormattedText 呈现文本,但似乎确实有任何方法可以对呈现的输出执行每个字符的 HitTest 。它是只读的,所以我基本上只需要选择,不需要编辑。

我会使用 RichTextBox 或类似的,但我需要根据嵌入文本本身的控制代码输出文本,因此它们并不总是嵌套,这使得构建正确的内联元素非常复杂的。我也有点担心该解决方案的性能;我有很多行,并且经常附加新行。

我查看了 GlyphRun,看来我可以从它或相关类中进行 HitTest ,但我会重新实现很多功能,而且似乎应该有更简单的方法...

有人知道实现这个的好方法吗?

最佳答案

您可以从 FormattedText 对象中获取每个字符的几何形状,并使用每个字符的边界进行 HitTest 。

var geometry = (GeometryGroup)((GeometryGroup)text.BuildGeometry(new Point(0, 0))).Children[0];
foreach (var c in geometry.Children)
{
if (c.Bounds.Contains(point))
return index;
index++;
}

在 OnRender 中,您可以渲染这些几何对象而不是格式化文本。

关于c# - 对 FormattedText 执行 HitTest 的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540002/

25 4 0
文章推荐: jquery - 单击链接标记时在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com