wpfの文字のピクセルをヒットテストする方法はありますか?文字「i」のドットをヒットさせたいのですが、ドットと「i」の線の間のスペースをクリックしてもヒットしません。DrawingContext.DrawTextメソッドを使用して実行しようとしましたが、テキストを含む結果のDrawingVisualに対してテストを実行すると、VisualTreeHelper.HitTestメソッドを使用しても、文字のスペースと黒のピクセルが区別されません。キャラクターのバウンディングボックス内のすべてのポイントにヒットを与えます。これを行う方法はありますか?
1 に答える
4
私は解決策を見つけました。これを行うには、GlyphRunDrawingの下位レベルに移動する必要があります。ここのコードを使用して、GeometryDrawingをGlyphRunDrawingに置き換えます。次に、各文字をGeometryとして含むGeometryGroupを取得し、次のコードを使用してヒットテストを実行します。
GeometryGroup ggroup = (GeometryGroup)((GlyphRunDrawing)drawing).GlyphRun.BuildGeometry();
if(ggroup.FillContains(pt))
{
Debug.WriteLine("Contains point " + pt.ToString());
}
于 2010-12-10T22:40:40.237 に答える