画布缩放后元素位置偏移怎么办?

令狐怡彤 阅读 2

我在做一个可视化编辑器,用 canvas 实现的画布。当用户滚动鼠标滚轮缩放画布时,我通过 ctx.scale(scale, scale) 来缩放,但发现拖拽元素时位置明显偏移了,好像没考虑当前缩放比例。

我试过在计算鼠标坐标时除以 scale,但还是不对。比如下面这段处理鼠标坐标的代码:

const rect = canvas.getBoundingClientRect();
const x = (event.clientX - rect.left) / scale;
const y = (event.clientY - rect.top) / scale;

可拖拽的时候元素还是会“跳”一下,感觉哪里漏了?是不是还要考虑平移(translate)的影响?

我来解答 赞 2 收藏
二维码
手机扫码查看
暂无解答

暂无解答