获取canvas中鼠标的坐标,并绘制图片

2019-04-15 11:22:35

难点在于,cavas可能放大,然后画图的坐标就会改变了,必须也要跟着放大缩小。


// 监听点击事件

canvas.addEventListener("click", function(event) {

    getMousePos(canvas, event);

});


function getMousePos(canvas, event) {

    //1

    var rect = canvas.getBoundingClientRect();

    //2

    var x = (event.clientX - rect.left) * (canvas.width / rect.width);

    var y = (event.clientY - rect.top)* (canvas.height / rect.height);

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

}



解析

getBoundingClientRect()

这个方法返回的对象有六个属性,如下表:


属性 描述

top 元素上边界距窗口最上边的距离

left 元素左边界距窗口最左边的距离

bottom 元素下边界距窗口最上边的距离

right 元素右边界距窗口最左边的距离

width 元素的宽度

height 元素的高度

rect.left * (canvas.width / rect.width)

之所以要乘一个(canvas.width / rect.width),是为了保证画布的像素值和显示在页面上的尺寸不一致的情况下,也能够正确获取到鼠标相对于canvas中的坐标。


画布的像素值和显示在页面上的尺寸不一致的情况


<canvas id="canvasId" width="100" height="100" style="width: 500px;height: 500px;"></canvas>


  • 2019-07-10 18:02:28

    Centos7安装percona-xtrabackup2.4和8.0版本

    Percona XtraBackup是一个基于MySQL的服务器的开源热备份实用程序 ,它不会在备份期间锁定您的数据库。 无论是24x7高负载服务器还是低事务量环境,Percona XtraBackup都旨在使备份成为一个无缝过程,而不会破坏生产环境中服务器的性能。

  • 2019-07-11 11:35:20

    VirtualBox添加新硬盘

    昨晚在自己的virtualbox中的linux装matlab2010a,没想到硬盘空间不足,所以找了下怎么添加硬盘的资料。也很简单,每几条命令。 大致流程:我的virtualbox版本是3.2.8,linux版本是xubuntu10.01吧貌似