我有svg文本元素的问题。我想把它翻过来。 为此,我使用scale(-1,1)函数。Svg文本元素垂直翻转
var t = getMatrix(element);
t.scale(-1,1);
element.transform(t);
但是元素似乎是相同的。转换不起作用。
如果我尝试翻转横轴,按比例(1,-1)函数。它的工作原理
请问我做错了什么?
我有svg文本元素的问题。我想把它翻过来。 为此,我使用scale(-1,1)函数。Svg文本元素垂直翻转
var t = getMatrix(element);
t.scale(-1,1);
element.transform(t);
但是元素似乎是相同的。转换不起作用。
如果我尝试翻转横轴,按比例(1,-1)函数。它的工作原理
请问我做错了什么?
感谢您的帮助。我忘了说我使用库Snap svg。 那里有bug。
如果有人有同样的问题,有解决办法: https://github.com/adobe-webplatform/Snap.svg/issues/153
如果你想创建一个使用变换对象在SVG元素的变换,它是五(5)步骤:
1)安装转换到你的元素。
var attachTransObject=myElement.transform
2.)为该附加变换创建变换列表。
var transObjList=attachTransObject.baseVal
3.)启动一个转换请求对象。
var requestTransformObj=mySVG.createSVGTransform()
4.)执行/请求期望的变换。
requestTransformObj.setScale(-1,1)
5.)将请求追加到元素的变换列表。
transObjList.appendItem(requestTransformObj)
这看起来可能有些迟钝,但是一旦您了解了这五个步骤,就会非常无缝。
例如,翻转文本元素围绕y轴,在其X,Y点是如下:
var x=parseFloat(myText.getAttribute("x"))
var y=parseFloat(myText.getAttribute("y"))
var attachTransObject=myText.transform
var transObjList=attachTransObject.baseVal
var requestTransformObj=mySVG.createSVGTransform()
requestTransformObj.setTranslate(x,y)
transObjList.appendItem(requestTransformObj)
var requestTransformObj=mySVG.createSVGTransform()
requestTransformObj.setScale(-1,1)
transObjList.appendItem(requestTransformObj)
var requestTransformObj=mySVG.createSVGTransform()
requestTransformObj.setTranslate(-x,-y)
transObjList.appendItem(requestTransformObj)
这将建立类似于文本元件上的变换:
transform="translate(153.785 94.71) scale(-1 1) translate(-153.785 -94.71)"
你能穿上的jsfiddle测试的例子吗?不知道你的getMatrix等。 – Ian
您似乎在使用自定义库,但没有告诉我们它是什么,我们无法帮助您。下面的答案使用了简单的Javascript和[W3 SVG接口方法](http://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransformList) – AmeliaBR