我有一个react js应用程序,我用canvas在上面画正方形。每个方块都有一个特定的颜色,我想当我点击它时,我可以检索颜色,这样我就可以继续我的程序。
但无论我点击哪里,我总是得到同样的东西:黑色。当我点击一个绿色的正方形。
下面是我的程序来恢复颜色在定位时的点击.
canvas.addEventListener("click", function (event) {
console.log("hola")
const x = event.clientX - canvas.offsetLeft;
const y = event.clientY - canvas.offsetTop;
const imageData = ctx.getImageData(x, y, 10, 10);
console.log(imageData);
console.log(x, y, "x/y");
const pixelData = imageData.data;
console.log(
`Rouge : ${pixelData[0]}, Vert : ${pixelData[1]}, Bleu : ${pixelData[2]}, Alpha : ${pixelData[3]}`
);
}, false);
这是我的输出,和点击的坐标。
这是我画布上另一个地方的点击。
就像你看到的,我有值0000而不是我的颜色
1条答案
按热度按时间zysjyyx41#
为了将点击Map到画布上(
width
和height
可能与实际显示大小不同),您需要首先将点击的位置标准化,然后将其乘以height
和width
。首先,您需要一个getBoundingClientRect()
,因为它的坐标与clientX
和clientY
在同一个空间中。然后,您可以使用此数学方法来获得单击所表示的画布上的确切像素坐标:然后只采样一个 * 单个 * 像素,而不是10x10网格,以获得精确的点击颜色。