Javascript Svg文本元素垂直翻转
我对svg文本元素有问题。我想把它转到y轴上。 为此,我使用scale(-1,1)函数Javascript Svg文本元素垂直翻转,javascript,svg,Javascript,Svg,我对svg文本元素有问题。我想把它转到y轴上。 为此,我使用scale(-1,1)函数 var t = getMatrix(element); t.scale(-1,1); element.transform(t); 但元素似乎是相同的。转换不起作用 若我试图翻转水平轴,按比例(1,-1)函数。它起作用了 拜托,我做错了什么 如果要使用transform对象在svg中的元素上创建变换,需要五(5)个步骤: 1.)将变换附加到元素 var attachTransObject=myElement.
var t = getMatrix(element);
t.scale(-1,1);
element.transform(t);
但元素似乎是相同的。转换不起作用
若我试图翻转水平轴,按比例(1,-1)函数。它起作用了
拜托,我做错了什么 如果要使用transform对象在svg中的元素上创建变换,需要五(5)个步骤: 1.)将变换附加到元素
var attachTransObject=myElement.transform
2.)为附加的变换创建变换列表
var transObjList=attachTransObject.baseVal
requestTransformObj.setScale(-1,1)
3.)启动转换请求对象
var requestTransformObj=mySVG.createSVGTransform()
4.)执行/请求所需的转换
var transObjList=attachTransObject.baseVal
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)"
谢谢你的帮助。我忘了说我使用了库快照svg。 那是虫子 如果有人会遇到同样的问题,有一个解决方案:
您能在JSFIDLE上放置一个测试示例吗?不确定您的getMatrix等是什么。您似乎正在使用自定义库,但如果不告诉我们它是什么,我们无法帮助您。下面的答案使用纯Javascript,可能只是语言问题,但你把我和“将转换附加到元素”和“生成转换列表”混淆了。元素上已经存在转换列表,您只需将其保存到一个变量中,以便于访问。对于原始海报,有一个简单的工作示例:。请注意,在小提琴中,文本最初是通过变换定位的,因此我可以在列表中添加负比例因子作为附加变换。如果文本是用x和y值定位的,那么您需要按照@Francis Hemsher的代码进行调整(否则您的内容将反映在svg边界之外)。