我知道这个问题已在其他帖子中得到解答,但答案似乎无法解决我的问题。我试图从浏览器点获得一个svg点,并且在坐标系统及其细微差别的所有不同名称中迷失了。
var point = svgElement.createSVGPoint();
point.x = 0;
point.y = 0;
var result = point.matrixTransform(svgElement.getScreenCTM());
上面的代码会产生一个值:
SVGPoint {x: 520.4003295898438, y: 198.69253540039062})
我认为术语屏幕坐标意味着坐标位于空间或整个屏幕(不仅仅是浏览器),但这一点对于浏览器在屏幕中的位置是不变的(如果我移动浏览器,这不会改变。)
window.screenX
和window.screenY
似乎确实指的是浏览器在整个计算机屏幕中的位置,并在您移动浏览器时进行更改。
我尝试了svg.getBoundingClientRect()
,它给了我价值:
{
top: 43,
right: 1144.09375,
bottom: 1080,
left: 504,
width: 640.09375…
}
请注意,left和top值与结果A 中的svg点坐标不匹配。
所以在这一点上,我有点困惑。什么是 getScreenCTM()返回?它似乎不同意屏幕坐标(整个计算机屏幕的坐标)或客户端坐标(浏览器的全局坐标)。
如果有人知道 getScreenCTM()正在做什么,我会非常感谢您解决这个问题。
谢谢!