3

generalpath のポイントを削除する方法はありますか? 次のように GeneralPath を描画します。

GeneralPath gp1=new GeneralPath();
gp1.moveTo(5,5);
gp1.lineTo(10,10);
gp1.lineto(10,30);
gp1.curveTo(2, 2, 7, 7, 5, 5);
gp1.closePath();

ここで、new から GeneralPath を作成せずに、lineto(10,10) などの特定のポイント/操作を削除したいと考えています。(性能上の理由)

次のようなコマンドは私が好きなものですが、これは利用できません:

GeneralPath.removesegment(1);

私の願いを説明するスクリーンショットを添付しました:-) GeneralPathの青いマークされたポイントを削除したいと思います。

感謝と敬意

ここに画像の説明を入力

4

1 に答える 1

4

Path2D.FloatからGeneralPath派生した は、その内部データ構造へのアクセスを提供せず、必要な種類の操作を許可しません。したがって、アクセス制限を再実装GeneralPathまたは回避する準備ができていない限り、これを達成する方法はありません。

一方で、パフォーマンスが大きな問題になるとは思えません。ほとんどのアプリケーションでは、パスをメモリ内で操作するよりもパスを描画する方が時間がかかるため、既存のパスから新しいパスを作成するのにそれほど時間はかからないと思います。の周りにラッパーを使用してこれを実装するので、使用してデータを新しいパスに移動PathIteratorできます。Path2D.appendラッパーは、削除したいポイントを検出してそれらをスキップし、他のすべてを元のパスのデフォルトの反復子に委譲します。

于 2013-02-04T16:19:48.103 に答える