gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:04:02 24 4
gpt4 key购买 nike

我正在编写一段代码,用于将小图像放在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com