1

GWT Canvas (Java) を使用して、ある種の図面/フローチャート/UML ダイアグラムのようなツールを作成しています。描画のヒット検出については、3 つの異なる戦略を想像できましたが、どれが自分の目標に最適かはわかりません。

  • すべてのシェイプ座標を追跡し、マウスクリックですべてのオブジェクトを反復するだけです
  • マウスクリックでゴーストキャンバスにすべてのオブジェクトを描画し、すべてのオブジェクトの描画後に isPointInPath() を使用します
  • ゴースト キャンバスを使用して、各オブジェクトを独自の色 (#000001、#000002 など) で描画し、それらの参照をマップに保持します。次に、ゴーストキャンバスでマウスクリックを検出し、マウスの下のピクセルカラーに属するオブジェクトを取得します

あなたは何を好みますか、そしてその理由は何ですか?

4

1 に答える 1

0

私は最初のアプローチが最善だと思います。形状への参照を保持する可能性が非常に高いため(つまり、表示されたオブジェクトを移動またはサイズ変更する場合)、必要なことは追加のメソッドを実装することだけですboolean isIn(Point mouseclick,Shape shape)( if の実装はオブジェクトの種類ごとに、シェイプに配置するとより効果的です)

ゴーストキャンバスをどのように機能させたいのかわかりませんが、余分なものを描画すると、リソースが大幅に浪費されるように聞こえます。

3番目の戦略では、画像/キャンバスから生のピクセルを取得する必要がありますが、これは高価な操作になる可能性があります

于 2012-12-20T13:22:33.180 に答える