如何在TextPath上的文本开头放置SVG图像

时间:2018-01-15 18:07:37

标签: javascript svg snap.svg svg.js

这是我想要实现的目标的图像。

example

我有一些沿着路径弯曲的文字。我想在文本的开头和/或结尾放置一个SVG图像。在这个例子中,它是一个功能区。但是,如何将色带放在文本的开头/结尾并使其旋转与路径上的文本匹配?文本是动态的,因此需要插入功能区的点可以更改为路径上的任何点。

1 个答案:

答案 0 :(得分:0)

要将评论包装成答案,请按以下步骤操作:

let text = myTextNode // 
let {x, y} = text.getStartPositionOfChar(0)
let rot = text.getRotationOfChar(0)

let image = document.createElementNS('http://www.w3.org/2000/svg', 'image')
image.setAttributeNS(null, 'x', x)
image.setAttributeNS(null, 'y', y)
image.setAttributeNS(null, 'transform', `rotate(${rot} ${x} ${y})`)

或在svg.js

let text = mySVGJSText
let {x, y} = text.node.getStartPositionOfChar(0)
let rot = text.node.getRotationOfChar(0)

let image = new SVG.Image()
   .load(src)
   .size(width, height)
   .move(x, y)
   .transform({rotate: rot, cx: x, cy: y})

// or when you have your root element:
root.image(src, width, height).move....