当前位置: 首页 > 面试题库 >

将SVG路径变成线段

凤柏
2023-03-14
问题内容

我正在尝试将SVG路径转换为Node中的点列表。我正在使用elementtree来解析SVG文件。

d是路径的定义,getPos只是将“ x,y”变成带有x和ay的对象,doLine只是将坐标添加到列表中。

  d = path.get('d')

  words = d.split(' ')

  oldPos = undefined
  startPos = undefined

  for i in [0..words.length]
    word = words[i]

    if word == 'm' or word == 'M'
      oldPos = getPos(words[i + 1])
      startPos = getPos(words[i + 1])
      i += 1

    else if word == 'l' or word == 'L'
      console.log('done nothing...')

    else if word == 'z' or word == 'Z'
      doLine(oldPos, startPos)

    else if word
      pos = getPos(word)
      doLine(oldPos, pos)
      oldPos = pos

目前,这似乎无法正常工作。

我知道我的路径永远不会有曲线,因此我不必为此担心。

我不确定SVG标准,所以如果有人可以帮助我,将非常感谢。


问题答案:
SVG包含自己的路径段 解析器,所以为什么要重新发明轮子。尝试在此基础上构建: http
//jsfiddle.net/longsonr/skWH5/

在壁虎中,路径是通过从头开始,读取一个非空白字符,然后使用一张表,该表列出了预期的自变量数目,这些自变量随后知道要读取这么多的数目(最多可以用一个逗号分隔它们)来解析。这将持续到字符串结尾。



 类似资料:
  • SVG 路径 - <path> <path> 元素用于定义一个路径。 下面的命令可用于路径数据: M = moveto L = lineto H = horizontal lineto V = vertical lineto C = curveto S = smooth curveto Q = quadratic Bézier curve T = smooth quadratic Bézier c

  • SVG中的路径概念可以是一个形状的外框,也可以是用来裁剪的线条,这个线条可以被描边,封闭时还可以被填充。 路径和折线或多边形不同之处在于,路径可以是直线也可以曲线,因此使用路径可以构造更为复杂的几何图形。 我们可以把路径看成是手工绘图的笔迹,可以用点的集合和绘制方式(如线段或圆弧)来描述。 path 标签 path 标签用来创建一条路径,路径元素的基本属性是路径数据,用 d='path data'

  • 所以我有一个超级奇怪的案例(至少对我来说是超级奇怪的)。 SVG路径不包含在SVG元素中。我已经尝试了很多事情来让这个工作,但没有一个是有效的,现在怀疑我错过了什么。 我有一把JS小提琴:https://jsfidle.net/67w3hays/ 正如您所看到的,youtube图标比容器大,因此无法伸长到容器中 代码: 答案的预期结果: 我希望这个SVG路径适合于18宽和18高的容器(或者接近18

  • 我想知道如何高亮(改变颜色)一个SVG路径的自重叠区域(甚至折线)。实际上,如果我更改路径的不透明度和笔画属性,则自翻转区域的颜色不会改变。 例如,具有以下路径,重叠区域不是红色-暗色。 以下是我到目前为止发现的,但对解决问题没有帮助。http://www.svgopen.org/2005/papers/abstractsvgopen/index.html#s2。 谢谢

  • 我有一个SVG元素:

  • SVG 渐变 渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上。 SVG渐变主要有两种类型: Linear Radial SVG 线性渐变 - <linearGradient> <linearGradient>元素用于定义线性渐变。 <linearGradient>标签必须嵌套在<defs>的内部。<defs>标签是definitions的缩写,它可对诸如渐