WPF - тестирование попадания в визуализированный пиксель символов - PullRequest
3 голосов
/ 10 декабря 2010

Есть ли способ нажать на проверку пикселей символов в wpf? Я хочу получить удар по точке символа «i», но не получаю удар, когда щелкаю пробел между точкой и линией «i». Я попытался сделать это с помощью метода DrawingContext.DrawText, но когда я нажимаю кнопку test на результирующем DrawingVisual, который содержит текст, используя метод VisualTreeHelper.HitTest, он не различает пространство и черные пиксели символа. Это дает удар для каждой точки в ограничительной рамке персонажа. Есть ли способ сделать это?

1 Ответ

4 голосов
/ 11 декабря 2010

Я нашел решение.Для этого вам нужно перейти на более низкий уровень в GlyphRunDrawing.Используйте код здесь и замените GeometryDrawing на GlyphRunDrawing.Затем получите GeometryGroup, которая содержит каждый символ как Geometry, и выполните тестирование попадания с кодом:

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