WPF - 检测字符呈现像素的命中测试

3
有没有一种方法可以在wpf中测试字符像素?我想要能够在点击字符“i”的点时获取到命中,但是在点击点与“i”的线之间的空格时不会获得命中。我尝试使用DrawingContext.DrawText方法,但是当我使用VisualTreeHelper.HitTest方法针对包含文本的结果DrawingVisual进行命中测试时,它不能区分字符空格和黑色像素。它会为一个字符的边界框中的每个点都提供命中。有没有办法做到这一点?
1个回答

4
我找到了解决方案。要做到这一点,您必须进入较低级别的GlyphRunDrawing。使用此处的代码,并将GeometryDrawing替换为GlyphRunDrawing。然后获取GeometryGroup,其中包含每个字符作为几何图形,并使用以下代码进行命中测试:
GeometryGroup ggroup = (GeometryGroup)((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry();
if(ggroup.FillContains(pt))
{
    Debug.WriteLine("Contains point " + pt.ToString());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接