2010-12-10 1 views
3

wpfの文字のピクセルをヒットする方法はありますか?私は文字「私」のドットのヒットを得ることができるようにしたいが、ドットと「私」のラインの間のスペースをクリックするとヒットしない。私はDrawingContext.DrawTextメソッドを使用してそれをやろうとしましたが、VisualTreeHelper.HitTestメソッドを使用してテキストを含む結果のDrawingVisualに対してテストを打つと、スペースと黒のピクセルが区別されません。これは、文字の境界ボックス内のすべての点にヒットを与えます。これを行う方法はありますか?WPF - 文字のヒットテストレンダリング

答えて

4

解決策が見つかりました。これを行うには、GlyphRunDrawingのレベルを下げる必要があります。コードhereを使用して、GeometryDrawingをGlyphRunDrawingに置き換えてください。次にGeometryGroupを取得します.GeometryGroupは各文字をGeometryとして取得し、コードでヒットテストを行います。

GeometryGroup ggroup = (GeometryGroup)((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry(); 
if(ggroup.FillContains(pt)) 
{ 
    Debug.WriteLine("Contains point " + pt.ToString()); 
} 
関連する問題