2010-10-17 88 views
1

我写在我的HTML5画布的应用程序拖拽&拖放功能,我想知道如何检测,如果我点击比矩形或正方形之外的形状,在这种情况下,我会做这样的事情这里面我的 '鼠标按下' 事件处理程序:检测形状坐标在画布

如果(evt._x> 13 & & evt._x < 202 ....){}

我不知道如何轻松地做类似与这样的圆弧:

ctx.arc(25,25,20,0,(Math.PI/180)* 36 0);

我希望这是明确的,预先感谢您。

回答

9

只需使用isPointInPath,如果一个给定的点是在当前图形路径内,其检查。如果您要在画布上绘制多个形状,那么最好的方法是将每个形状与“隐藏”画布相关联,将每条路径绘制到其相应的画布上,而不是针对每个这些画面测试isPointInPath,从而抵消目标/鼠标坐标根据需要。 Theres没有理由诉诸你自己的计算。

+0

这非常棒。我从来没有听说过isPointInPath,谢谢,我会试试看! – 2010-10-18 19:28:55

2

首先,你检查,如果点击是形状的边框内(完全包住形状的最小矩形)。如果是,那么你做更复杂的数学来确定点击是否在形状本身内。你不得不自己实施这个数学计算,因为我认为它没有内置任何东西。

+0

我明白了,这很有道理!看起来我有一些玩耍的事情要做。再次感谢。 – 2010-10-17 17:39:32

0

这听起来很蠢,但你可以使用<area>标记一个<map>内通过一个<img>创建交互式多边形。他们有自己的onclicks/mouseovers /等。已被所有浏览器实施。