Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 画布中形状坐标的检测_Javascript_Html_Canvas - Fatal编程技术网

Javascript 画布中形状坐标的检测

Javascript 画布中形状坐标的检测,javascript,html,canvas,Javascript,Html,Canvas,我正在HTML5画布应用程序中编写拖放功能,我想知道如何检测我是否在单击矩形或正方形以外的形状,在这种情况下,我会在我的“mousedown”事件处理程序中执行以下操作: 如果(evt.x>13&&evt.x

我正在HTML5画布应用程序中编写拖放功能,我想知道如何检测我是否在单击矩形或正方形以外的形状,在这种情况下,我会在我的“mousedown”事件处理程序中执行以下操作:

如果(evt.x>13&&evt.x<202….){

我不知道如何用这样的弧线轻松地做这样的事情:

ctx.arc(25,25,20,0,(数学PI/180)*360)


我希望这是清楚的,提前谢谢您。

首先检查单击是否在形状的边界框(完全包围形状的最小矩形)内。如果是,则进行更复杂的数学运算以确定单击是否在形状本身内。你必须自己实现这个数学,因为我认为它没有任何内置功能。

首先你要检查点击是否在形状的边界框内(完全包围形状的最小矩形)。如果是,则进行更复杂的数学运算以确定单击是否在形状本身内。你必须自己实现这个数学,因为我认为它没有任何内在的东西。

你会得到你需要的公式,也会在维基百科的文章中。

你会得到你需要的公式,也会在维基百科的文章中。

这听起来可能很愚蠢,但是您可以在
上使用
中的标记来创建交互式多边形形状。它们有自己的onclick/mouseovers/等,已经被所有浏览器实现。

这听起来可能很愚蠢,但是你可以在
上使用
内的标签来创建交互式多边形形状。它们有自己的onclick/mouseovers/etc。所有浏览器都已经实现了这些功能。

只需使用,即可检查给定点是否在当前绘图路径内。如果要在画布上绘制多个形状,一种好的方法是将每个形状与“隐藏”画布相关联,将每个路径绘制到其各自的画布上,然后针对每个图形测试isPointInPath,根据需要偏移目标/鼠标坐标。没有理由为此求助于您自己的计算。

只需使用,它会检查给定点是否在当前图形路径内。如果要在画布上绘制多个形状,一种好的方法是将每个形状与“隐藏”画布相关联,将每个路径绘制到其各自的画布上,然后针对每个图形测试isPointInPath,根据需要偏移目标/鼠标坐标。没有理由为此求助于你自己的计算。

我明白了,这是有道理的!看来我有一些事情要做。再次感谢。我明白了,这是有道理的!看来我有一些事情要做。再次感谢,太棒了。我从来没有听说过isPointInPath。显然,谢谢,我要试试!太棒了。我从来没有听说过isPointInPath。显然,谢谢,我要试试!