【发布时间】:2011-07-07 13:28:00
【问题描述】:
只是想知道是否有人试图侵入 WPF DocumentViewer 以使其更有用。我已经花了将近一周的时间尝试根据我使用反射提取的方法为该控件创建更强大的 API。
每个人都知道如何通过反射从文档查看器中获取选定的文本,但我的任务更复杂。 Selected text 具有返回 ITextPointers 的 End 和 Start 属性。此外,我还有一组使用this code 提取的GlyphRuns。现在最后我想找出哪个GlyphRun 包含选择开始。
所以我想知道如何将ITextPointers 转换为GlyphRuns,反之亦然。我知道他们没有一对一的关系。这个带有封闭 API 的控件以及上周在 Reflector 中花费的时间并没有让我睡得很好。我希望也许有人之前尝试过这样做或看过代码示例,并且能够引导我穿过这些丛林。
【问题讨论】:
-
如你所说,没有1:1的关系。此外,GlyphRun 仅继承自对象。但是,它确实包含值得注意的方法。 (我没有尝试过。)例如,GlyphRun.ComputeAlignmentBox() 返回一个 Rect,它可能包含位置数据。我认为这是关键……将 GlyphRun 和 TextPointer 位置数据关联起来。
-
你能和我们分享一些代码,以便我们也可以尝试一下
-
@HBMAAM,在这一年里我找到了或多或少可行的解决方案,我打算在这里发布它,但这需要一些时间。
-
@Snowbear liaaar
标签: c# wpf documentviewer glyph