JS SVG getCTM和setCTM?

时间:2012-04-23 13:41:38

标签: javascript svg

如果我使用getCTM()来获取当前的转换矩阵,如果我想在以后恢复它,如何使用该对象来设置矩阵(我知道保存和恢复但是那些引用了画布和不是项目)

我知道我设置了属性:

var m = someitem.getCTM();
$(someitem).attr("transform", "matrix("+m.a+","+m.b+","+m.c+","+ m.d+","+m.e+","+m.f+")");

但这似乎还有很长的路要走。我找不到任何这种近似函数的setCTM函数。

为webkit开发,如果这会产生影响。

谢谢!

2 个答案:

答案 0 :(得分:6)

function setCTM(someitem,m) {
  return someitem.transform.baseVal.initialize(
    someitem.ownerSVGElement.createSVGTransformFromMatrix(m));
}

如果您保存someItem.getCTM(),而不是保存someitem.transform.baseVal.getitem(0),则可以使用:

function setTransform(someitem,t) {
  return someitem.transform.baseVal.initialize(t));
}

答案 1 :(得分:4)

var transform = ownerSVGElement.createSVGTransform()

transform.setMatrix(elem.getCTM())

someelement.transform.baseVal.initialize(transform)