在svg和浏览器坐标之间转换

时间:2016-08-31 19:26:39

标签: javascript html svg

我知道这个问题已在其他帖子中得到解答,但答案似乎无法解决我的问题。我试图从浏览器点获得一个svg点,并且在坐标系统及其细微差别的所有不同名称中迷失了。

结果A

var point = svgElement.createSVGPoint();
point.x = 0;
point.y = 0;
var result = point.matrixTransform(svgElement.getScreenCTM());

上面的代码会产生一个值: SVGPoint {x: 520.4003295898438, y: 198.69253540039062})

我认为术语屏幕坐标意味着坐标位于空间或整个屏幕(不仅仅是浏览器),但这一点对于浏览器在屏幕中的位置是不变的(如果我移动浏览器,这不会改变。)

结果B

window.screenXwindow.screenY似乎确实指的是浏览器在整个计算机屏幕中的位置,并在您移动浏览器时进行更改。

结果C

我尝试了svg.getBoundingClientRect(),它给了我价值:

{
    top: 43,
    right: 1144.09375,
    bottom: 1080,
    left: 504,
    width: 640.09375…
 }

请注意,left和top值与结果A 中的svg点坐标不匹配。

所以在这一点上,我有点困惑。什么是 getScreenCTM()返回?它似乎不同意屏幕坐标(整个计算机屏幕的坐标)或客户端坐标(浏览器的全局坐标)。

如果有人知道 getScreenCTM()正在做什么,我会非常感谢您解决这个问题。

谢谢!

0 个答案:

没有答案