【问题标题】:Get the mouse coordinates when clicking on canvas单击画布时获取鼠标坐标
【发布时间】:2017-11-15 01:37:48
【问题描述】:

一个常见问题,但我仍然需要帮助。当有人在画布内单击时,我试图获取并存储鼠标坐标。

我的 HTML

<canvas id="puppyCanvas" width="500" height="500" style="border:2px solid black" onclick = "storeGuess(event)"></canvas>

还有我的 javascript

//setup canvas
var canvasSetup = document.getElementById("puppyCanvas");
var ctx = canvasSetup.getContext("2d");

guessX = 0;//stores user's click on canvas
 guessY = 0;//stores user's click on canvas

function storeGuess(event){
    var x = event.clientX - ctx.canvas.offsetLeft;
    var y = event.clientY - ctx.canvas.offsetTop;
    /*guessX = x;
    guessY = y;*/


    console.log("x coords:" + x + ", y coords" + y);

我已经阅读了大量关于此的论坛、w3schools 和视频。我快要弄清楚了,但我错过了一些东西。删除ctx.canvas.offsetLeft和ctx.canvas.offsetTop可以得到页面的坐标。但我需要以某种方式合并这些以获取画布的坐标,然后将其存储到变量guessX 和guessY 中。

【问题讨论】:

标签: canvas coordinates mouse


【解决方案1】:

您可以通过使用MouseEventoffsetXoffsetY 属性来实现这一点

//setup canvas
var canvasSetup = document.getElementById("puppyCanvas");
var ctx = canvasSetup.getContext("2d");
guessX = 0; //stores user's click on canvas
guessY = 0; //stores user's click on canvas
function storeGuess(event) {
    var x = event.offsetX;
    var y = event.offsetY;
    guessX = x;
    guessY = y;
    console.log("x coords: " + guessX + ", y coords: " + guessY);
}
&lt;canvas id="puppyCanvas" width="500" height="500" style="border:2px solid black" onclick="storeGuess(event)"&gt;&lt;/canvas&gt;

【讨论】:

    【解决方案2】:

    我正在使用这段代码。

    var myCanvas = document.querySelector('#canvas');
    
    myCanvas.addEventListener('click', function(event) {
        var rect = myCanvas.getBoundingClientRect();
        var x = event.clientX - rect.left;
        var y = event.clientY - rect.top;
        console.log("x: " + x + " y: " + y); 
    }, false);
    &lt;canvas width="400" height="400" id="canvas" style="background-color: lightblue"&gt;&lt;/canvas&gt;

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2019-02-14
      • 1970-01-01
      • 2014-05-29
      • 2015-06-17
      • 2010-10-24
      相关资源
      最近更新 更多