이벤트 처리기에서 반환 한 event.clientX
및 event.clientY
좌표는 캔버스 요소와 창의 오프셋으로 조정해야합니다. 이를 위해 canvas.getBoundingClientRect
을 사용하여 left
& top
캔버스 오프셋을 얻을 수 있습니다. resize
& scroll
이벤트를 수신하십시오. 이러한 이벤트가 발생하면 캔버스의 현재 오프셋을 다시 가져와야합니다. 여기
// Fetch offsetX & offsetY variables that contain the
// canvas offset versus the window
// Re-fetch when the window is resized or scrolled
function reOffset(){
var BB=canvas.getBoundingClientRect();
offsetX=BB.left;
offsetY=BB.top;
}
var offsetX,offsetY;
reOffset();
window.onscroll=function(e){ reOffset(); }
window.onresize=function(e){ reOffset(); }
에서는 이벤트 핸들러에서 정확한 마우스 좌표를 계산하기 위해 오프셋을 사용할 수있다 :
function handleMouseDown(e){
// tell the browser we're handling this event
e.preventDefault();
e.stopPropagation();
// calculate the mouse position
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
// your stuff
}
왜 당신이 그 빼기를하고있다 ??? 캔버스 크기는 350x350이므로 img는 350x350입니다. https://jsfiddle.net/6yLqa5hz/1/ 하단 오른쪽은 350,350이어야합니다. – DaniP