【问题标题】:WPF - Hit Testing Rendered Pixel of CharactersWPF - 命中测试渲染的字符像素
【发布时间】:2010-12-10 20:01:45
【问题描述】:
有没有办法在 wpf 中测试字符的像素?我希望能够命中字符“i”的点,但是当我单击点和“i”行之间的空格时不会命中。我尝试使用 DrawingContext.DrawText 方法来做到这一点,但是当我使用 VisualTreeHelper.HitTest 方法对包含文本的结果 DrawingVisual 进行测试时,它不会区分字符的空格和黑色像素。它会命中角色边界框中的每个点。有没有办法做到这一点?
【问题讨论】:
标签:
wpf
character
pixel
hittest
【解决方案1】:
我找到了解决方案。为此,您必须转到 GlyphRunDrawing 的较低级别。使用代码 here 并将 GeometryDrawing 替换为 GlyphRunDrawing。然后获取包含每个字符为Geometry的GeometryGroup,并使用代码进行命中测试:
GeometryGroup ggroup = (GeometryGroup)((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry();
if(ggroup.FillContains(pt))
{
Debug.WriteLine("Contains point " + pt.ToString());
}