canvas画布当中鼠标点击的坐标计算公式

// canvas画布当中的画笔坐标万能计算公式
// pointX = (transformOriginX - downX)/scale *(scale - 1) + downX - translateX
// pointY = (transformOriginY - downY)/scale *(scale - 1) + downY - translateY

// 备注:transformOrigin表示transform 变化的基点
//	downX\downY 表示鼠标按下时的横纵坐标
//    scale 表示缩放的倍数  默认值为1
//  translateX\translateY 表示平移的距离
    
测试代码:
const box = document.getElementsByClassName("box");
box.onmousedown = function(e){
    // 计算的是鼠标点击的坐标  因此需要减去容器本身的偏移量
    const downX = e.pageX - box.offsetLeft;
    const downY = e.pageY - box.offsetTop;
    const scale	= 2;
    const translateX = -40;
    const translateY = -40;
    const transformOriginX = 120;
    const transformOriginY = 120;
    const goal = document.getElementsByClassName("goal");
    goal.style.left = (transformOringinX - downX)/scale*(scale-1) + downX - translateX + 'px';
    goal.style.left = (transformOriginY - downY)/scale*(scale - 1) + downY - translateY + 'px';
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值