Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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检查HTML5画布元素在给定坐标区域中是否包含某些内容_Javascript_Jquery_Html_Canvas_Chart.js - Fatal编程技术网

如何使用javascript检查HTML5画布元素在给定坐标区域中是否包含某些内容

如何使用javascript检查HTML5画布元素在给定坐标区域中是否包含某些内容,javascript,jquery,html,canvas,chart.js,Javascript,Jquery,Html,Canvas,Chart.js,我目前正在使用Chart.js在项目中生成条形图。我将其设置为通过ASP.NET webmethod将数据返回图表,并将其设置为使用静态标签 我通过在onComplete回调之后遍历数据集和数据,然后使用fillText命令写入画布来完成这项工作 现在,我遇到了标签有时与图表内容重叠或重叠的问题 我想做的是检查画布在给定的点/区域上是否已经有东西这可能吗?如果可能,怎么做 我是一名经验丰富的程序员,但对JavaScript非常陌生。我搜索了几个小时,试图找到一个合适的解决方案,但没有找到任何工作

我目前正在使用Chart.js在项目中生成条形图。我将其设置为通过ASP.NET webmethod将数据返回图表,并将其设置为使用静态标签

我通过在onComplete回调之后遍历数据集和数据,然后使用fillText命令写入画布来完成这项工作

现在,我遇到了标签有时与图表内容重叠或重叠的问题

我想做的是检查画布在给定的点/区域上是否已经有东西这可能吗?如果可能,怎么做

我是一名经验丰富的程序员,但对JavaScript非常陌生。我搜索了几个小时,试图找到一个合适的解决方案,但没有找到任何工作正常

如果需要,我可以提供示例代码和图像,但考虑到问题的范围,我认为这不是必需的

当前项目资源:JavaScript、JQuery、Chart.js、bootstrap、ASP.NET webmethods


谢谢

好吧,我的需求改变了,我不再需要担心这一点,但我将发布我用过的代码:

var imgData=context.getImageData(0,0,canvas.width,canvas.height);
//函数在imgData上下文中查找特定像素的十六进制颜色。
函数getPixel(imgData,索引){
var i=指数*4,d=imgData.data;
返回rgbToHex(d[i],d[i+1],d[i+2])
//返回rgb值的十六进制字符串。
}
//函数计算imgData上下文的偏移量,然后从getPixel函数调用返回十六进制颜色。
函数getPixelFromCoordinate(imgData,x,y){
返回getPixel(imgData,y*imgData.width+x);
}
//函数将给定的rgb值转换为十六进制字符串。
函数rgbToHex(r、g、b){
//左移值以允许廉价的十六进制构造

返回“#”+((1)画布包含像素,您可以从中询问像素的颜色和数量。所有其他抽象必须来自其他来源。2D API添加了一点,但该数据是暂时的,不打算保存任何抽象,除了涉及渲染的抽象。您必须查看更高级别的界面用于渲染到画布(例如chart.js)以获取有关渲染到画布的对象的信息。可以通过调用getImageData()从图形上下文以数组形式获取画布的像素数据在图形上下文中。也许您可以使用它来找出特定点或区域中的内容?这可能会有所帮助:我可以知道像素的颜色,并确定是否预设了任何内容。提供的信息非常有用。完成后,我将在此处发布解决方案。谢谢!