javascript - 窗口大小调整时如何计算图像的X Y坐标?

标签 javascript html canvas

我正在编写一段代码,用于将小图像放在 HTML Canvas 上。还生成该图像上的单击事件。图像有高度(50),宽度(50),X-Y坐标(250, 150), Canvas 也有高度(480),宽度(720)。
因此,当我单击图像时,会收到警报(“您单击了图像”)。但是,当我将窗口大小调整到较小时,也会在错误的位置生成警报,然后也会在错误的位置生成警报消息。

我想仅在单击图像时生成警报消息。如果我调整窗口大小(小),那么仅在单击图像时也应该生成警报消息。
检查 fiddle -
[在此处输入链接描述][1]

  [1]: https://jsfiddle.net/u84p9qn1/

最佳答案

当 Canvas 元素和 Canvas 位图大小不同时,您需要使用一个因子来缩放鼠标位置以适应位图中的相对位置。这可以通过将位图大小除以元素大小来完成。

<强> Modified fiddle

$("#myCanvas").click(function (event) {

    // get size of element and divide bitmap size on it
    var rect = this.getBoundingClientRect();
    var scaleX = this.width  / rect.width;
    var scaleY = this.height / rect.height;

    // scale position: (first adjust, then scale)
    var mouseX = Math.round((event.clientX - rect.left) * scaleX);
    var mouseY = Math.round((event.clientY - rect.top ) * scaleY);

    var x = 250;
    var y = 150;
    var w = 50;
    var h = 50;

    if (mouseX >= x && mouseX <= x + w && mouseY >= y && mouseY <= y + h) {
        alert("You clicked on image");
    }
}

关于javascript - 窗口大小调整时如何计算图像的X Y坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30931436/

相关文章:

javascript - PHP 验证检查记录是否存在

html - Excel 到 HTML 表格

javascript - 如何检测iframe内页面的高度?

android - 如何在 Android 中使用 Canvas.drawText 绘制 Spanned String

javascript - HTML5 Canvas 动画不显示背景图像

JavaScript 获取字符串的实际长度(没有实体)

javascript - 脚本出了什么问题?

html - 创建一个数据框,使用 pkg :sjPlot functions 生成部分斜体单元格

javascript - 无法使用react-konva为线条提供渐变

javascript - 从用户输入执行 JavaScript 的适当方法?