如何将浏览器中的坐标转换为 canvas 中的坐标

function convertToCanvas(canvas, x, y} {
	const canvasElement  = canvas.getBoundingClientRect() ;
	return { x: (x- canvasElement.left)*(canvas.width  / canvasElement.width),
			y: (y - canvasElement.top)*(canvas.height / canvasElement.height)
	}
}

转换的逻辑是先使用鼠标事件中相对于浏览器文档的坐标减去 canvas 左上角的坐标,然后进行相应的缩放,之所以要进行缩放,是因为 canvas 在页面中显示的大小和实际的大小不一定是 1:1 的关系, 这是因为 canvas 实际的大小是通过 canvas 标签的 width 、 height 属性指定的,而显示的大小可以通过 css 来指定,这是两套互相独立的值,从而导致显示的大小和实际的大小不 定是 1:1 的关系 例如, canvas 本身的宽和高分别是 300 、150 ,而 css中设置为 600 、 600 ,那么 canvas 轴方向的 个像素显示到页面中的就是 2个像素,而canvas中y 轴方向的 1个像素显示到页面中是4个像素,因此需要进行缩放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值