0

我正在尝试检测一个点是否在 gwt-g2d 形状内。有谁知道这怎么可能?

我只能确定该点是否在上下文中的任何路径内。

假设我有一个包含两个矩形(A 和 B)的上下文,并且想确定鼠标在哪个矩形中,我该怎么做?

________________________
| _______ _______ |
| | | | | |
| | 一个 | | 乙| |
| |_______| |_______| |
|________________________|

矩形只是示例,我还想确定该点是否为复杂形状。

4

2 回答 2

0

您可以查找多边形中的点问题。如果你有很多多边形,人们也倾向于通过存储多边形的左、右、下和最高点(或存储包围多边形的圆的半径和中心点)来缩小可能性,以便他们可以快速确定该点是否甚至可能在多边形内。

于 2011-06-06T13:52:34.727 回答
0

经过一番尝试,我通过编辑 gwt-g2d 源找到了解决方案。

gwt-g2d 为每个 Surface 创建一个带有画布的 div。现在我将 Surface 更改为仅创建具有位置:绝对的画布。现在我只是创建多个画布并使用它的函数 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 回答