画布缩放后元素位置偏移怎么办?
我在做一个可视化编辑器,用 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)的影响?
暂无解答