有没有办法在 wpf 中测试字符的像素?我希望能够命中字符“i”的点,但是当我单击点和“i”行之间的空格时不会命中。我尝试使用 DrawingContext.DrawText 方法来做到这一点,但是当我使用 VisualTreeHelper.HitTest 方法对包含文本的结果 DrawingVisual 进行测试时,它不会区分字符的空格和黑色像素。它会命中角色边界框中的每个点。有没有办法做到这一点?
问问题
525 次
1 回答
4
我找到了解决方案。为此,您必须转到 GlyphRunDrawing 的较低级别。使用此处的代码并将 GeometryDrawing 替换为 GlyphRunDrawing。然后获取 GeometryGroup,其中包含每个字符为 Geometry,并使用代码进行命中测试:
GeometryGroup ggroup = (GeometryGroup)((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry();
if(ggroup.FillContains(pt))
{
Debug.WriteLine("Contains point " + pt.ToString());
}
于 2010-12-10T22:40:40.237 回答