我想测试特定 SVG 元素的位置是在当前可见的平移缩放区域内部还是外部。如果它在外面,那么我可以平移以使其刚好在相应的边界内。
这听起来像是一个简单的操作,只是我找不到正确的测试来查看某个点是否在可见区域之外;如果我能做到这一点,那么我可以毫不费力地处理平底锅。
根据原始元素 x/y 属性,我拥有的位置是未转换的位置,因此我希望必须访问适当的 CTM,但我找不到这个。
我想测试特定 SVG 元素的位置是在当前可见的平移缩放区域内部还是外部。如果它在外面,那么我可以平移以使其刚好在相应的边界内。
这听起来像是一个简单的操作,只是我找不到正确的测试来查看某个点是否在可见区域之外;如果我能做到这一点,那么我可以毫不费力地处理平底锅。
根据原始元素 x/y 属性,我拥有的位置是未转换的位置,因此我希望必须访问适当的 CTM,但我找不到这个。
哎呀,我有点仓促地发布了这个问题。CTM 隐藏<g>
在由 pan-zoom 库创建的特定元素上,以围绕您自己的 SVG 元素。
可以使用以下方法找到:
var ctm = document.getElementById("svg-id").querySelector('.svg-pan-zoom_viewport').getCTM();
其中 svg-id 是您自己的<svg>
元素 ID。
由此,很容易使用矩阵计算在新旧坐标系之间进行映射,按照变换