0

文字を表す GraphicsPath があります。RectangleF と交差しているかどうかを確認したいのですが、Region.Intersect を使用するには遅すぎます。速度のために精度を犠牲にしても構わないと思っているので、文字を特定の数の長方形に分割できるかどうかを考えました (たとえば、2、これは文字の大部分をカバーします。たとえば、P を 2 つの長方形 (1 つはステム用、もう 1 つはヘッド用) に分割し、これらと比較します。何千もの比較を行うので、より高速になります。占有スペースを最もよくカバーする多数の長方形にグラフィックス パスを分割する最良の方法は何でしょうか (つまり、ap の場合、頭の場合は幅が広く、尾の場合は長くて細いものになります)。

編集:逆に考えることもできると思います。つまり、グラフィックパスの境界内にあるが、それと重ならない2つの最大の長方形を取得するにはどうすればよいですか。

4

1 に答える 1

0

中間ステップは、Region(GraphicsPath)コンストラクターとRegion.GetRegionScans()メソッドです。リージョンを1回だけ長方形に分解し、返されたRectangleF []に対して何千回もテストすることで、より高速になるはずです。領域を縮小する行列を渡すことで、長方形の数を減らすことができます。

于 2012-09-20T13:48:17.463 に答える