浏览器缩放时,HTML5 Canvas方法getImageData在mousemove上没有给出正确的结果

时间:2014-11-05 11:57:19

标签: html5 canvas

问题是关于HTML5中的Canvas。我使用chartjs.org在画布上创建了一个圆环图表菜单。下面是小提琴。我有一些弧形,颜色定义用于识别不同的模块。当我在这些弧上移动鼠标时,我需要获得鼠标指针下方的相应颜色。当浏览器100%缩放时,这可以100%正确。但是,当我将浏览器设置为不是100%缩放(比如说90%或75%)时,鼠标移动到鼠标指针下方时,我没有得到正确的颜色代码。当用户使用不同的分辨率(如1980 x 1020)时也会发生这种情况。这种情况仅发生在chrome中。如果有人对此有任何想法,对我有帮助。

document.getElementById("canvas").addEventListener('mousemove', function (e) {

    var MainCanvas = document.getElementById("canvas");
    var MainCanvasCtx = MainCanvas.getContext("2d");

    mouseX = e.clientX - getBodyOffSetLeft(canvas);
    mouseY = e.clientY - getBodyOffSetTop(canvas);
    var p = canvas.getContext('2d').getImageData(mouseX, mouseY, 1, 1).data;
    var hex = "#" + ("000000" + rgbToHex(p[0], p[1], p[2])).slice(-6);
    $("#hex").text(hex + " " + e.screenX + " " + e.offsetX + " " + e.clientX + " " + e.pageX + " " + mouseX);




}, false);

这里是小提琴:http://jsfiddle.net/7eLk2ydn/3/

0 个答案:

没有答案