页面布局如下:
画布区域通过panzoom
实现了放、缩、拖拽等基础功能,里面放置了一些dom节点,绝对定位,都有width、height、left、top属性,节点已经实现了移动功能,但是现在要求右侧有一个待操作面板,希望把右侧容器里面的dom拖拽到画布鼠标松开的位置,目前主要的困难是:点击右侧待操作区域节点时,如何计算该节点对应到画布区域的坐标(x、y)?因为画布区域是可以拖拽、放、缩的。
页面布局如下:
画布区域通过panzoom
实现了放、缩、拖拽等基础功能,里面放置了一些dom节点,绝对定位,都有width、height、left、top属性,节点已经实现了移动功能,但是现在要求右侧有一个待操作面板,希望把右侧容器里面的dom拖拽到画布鼠标松开的位置,目前主要的困难是:点击右侧待操作区域节点时,如何计算该节点对应到画布区域的坐标(x、y)?因为画布区域是可以拖拽、放、缩的。
应该可以:
const { scale, x, y } = panzoomInstance.getTransform();
const matrix = new DOMMatrix()
.scale(scale, scale) // 缩放
.translate(x, y) // 平移
.inverse(); // 求逆
const { x: originX, y: originY } = matrix.transformPoint({
x: offsetX,
y: offsetY
})
// offsetX, offsetY 为鼠标相对于变换原点的坐标
// originX, originY 为鼠标映射到画布上的点的坐标
6 回答5.4k 阅读✓ 已解决
9 回答9.6k 阅读
5 回答3.8k 阅读✓ 已解决
2 回答7k 阅读
4 回答8.2k 阅读✓ 已解决
7 回答10.2k 阅读
5 回答8.4k 阅读