Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Svg文本元素垂直翻转_Javascript_Svg - Fatal编程技术网

Javascript Svg文本元素垂直翻转

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.

我对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.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边界之外)。