WPF - 命中测试渲染的字符像素

时间:2010-12-10 20:01:46

标签: wpf character pixel hittest

有没有办法测试wpf中字符的像素?我希望能够获得角色'i'的点击,但是当我点击点和'i'线之间的空格时不会受到打击。我尝试使用DrawingContext.DrawText方法进行此操作,但是当我针对包含文本的结果DrawingVisual进行测试时,使用VisualTreeHelper.HitTest方法,它不区分字符的空格和黑色像素。它为角色的边界框中的每个点提供了一个命中。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

我找到了解决方案。要做到这一点,你必须到较低级别到GlyphRunDrawing。使用代码here并将GeometryDrawing替换为GlyphRunDrawing。然后获取GeometryGroup,其中包含每个字符作为Geometry,并使用代码进行命中测试:

GeometryGroup ggroup = (GeometryGroup)((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry();
if(ggroup.FillContains(pt))
{
    Debug.WriteLine("Contains point " + pt.ToString());
}