0

ポイントがgwt-g2d形状内にあるかどうかを検出しようとしています。誰かがこれがどのように可能か知っていますか?

ポイントがコンテキスト内の任意のパス内にあるかどうかを判断できます。

2つの長方形(AとB)のコンテキストがあり、マウスがどの長方形にあるかを確認したい場合、どうすればよいですか?

________________________
| _______ _______ |
| | | | | |
| | A | | B | |
| | _______ | | _______ | |
| ________________________ |

長方形は単なる例であり、ポイントが複雑な形状であるかどうかも確認したいと思います。

4

2 に答える 2

0

ポイントインポリゴンの問題を調べることができます。ポリゴンが多い場合は、ポリゴンの左、右、下、最上部のポイントを保存する(またはポリゴンを囲む円の半径と中心点を保存する)ことで、可能性を絞り込む傾向があります。ポイントがポリゴンの内側にある可能性があるかどうかをすばやく判断できます。

于 2011-06-06T13:52:34.727 に答える
0

いくつか試した後、gwt-g2dソースを編集して解決策を見つけました。

gwt-g2dは、サーフェスごとにキャンバスを使用してdivを作成します。ここで、Surfaceを変更して、position:absoluteのキャンバスのみを作成しました。今、私は複数のキャンバスを作成し、その関数IsPointInPathを使用しています。

Surface.javaの変更:

    public Surface(int width, int height) {
            canvas = Document.get().createElement("canvas").cast();
            setElement(Document.get().createDivElement());
            getElement().appendChild(canvas);
            canvasInitializer.init(canvas, width, height);
            setStylePrimaryName("g2d-Surface");
            this.width = width;
            this.height = height;
            context = canvas.getContext2D();
    }

に:

public Surface(int width, int height) {
    canvas = Document.get().createElement("canvas").cast();
    canvas.setAttribute("style", "position:absolute;");
    setElement(canvas);
    canvasInitializer.init(canvas, width, height);
    setStylePrimaryName("g2d-Surface");
    this.width = width;     
    this.height = height;
    context = canvas.getContext2D();
}
于 2011-06-06T18:20:18.703 に答える