2010-12-10 86 views
3

有沒有方法來測試wpf中字符的像素?我希望能夠擊中角色'i'的點,但是當點擊點和'i'行之間的空格時不會受到打擊。我試圖使用DrawingContext.DrawText方法來完成它,但是當我使用VisualTreeHelper.HitTest方法對包含文本的結果DrawingVisual進行測試時,它不會區分字符的空間和黑色像素。它爲角色的邊界框中的每個點提供了一個命中。有沒有辦法做到這一點?WPF - 命中測試渲染字符像素

回答

4

我找到了解決方案。要做到這一點,你必須進入GlyphRunDrawing的較低級別。使用代碼here並用GlyphRunDrawing替代GeometryDrawing。然後獲取包含每個字符爲幾何的GeometryGroup,並使用代碼執行命中測試:

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