svg路径对象和解析器
svg.path的Python项目详细描述
svg.path
path是实现不同路径的对象的集合 SVG中的命令,以及SVG路径定义的解析器。
用法
共有四个路径段对象, 直线 , 圆弧 , 立方线 和 quadraticbezier `还有一个 路径 对象充当 路径段对象的集合。
这些类的所有坐标值都以复数形式给出, 其中, .real 部分表示x坐标, .imag 部分表示x坐标。 代表Y坐标。
< Buff行情>>>> from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier
所有这些对象都有一个 .point() 函数,该函数将返回 路径上的点的坐标,该点以浮点形式给出 点值,其中 0.0 是路径的起点, 1.0 是终点。
可以使用 .length() 函数。对于cubicbezier和arc段,这是通过 几何近似,因此 可能非常慢。你可以 通过向方法传递一个 错误 选项使其更快。如果你 不要误传,默认为1e-12
< Buff行情>>>> CubicBezier(300+100j, 100+100j, 200+200j, 200+300j).length(error=1e-5) 297.2208145656899
cubicbezier和arc还有一个 min_depth 选项,指定 最小递归深度。默认设置为5,因此使用 最少32段用于计算。将其设置为0对于 因为它们可能接近一条直线。
line.length() 和 quadraticbezier.length() 也接受 参数,但它们被忽略。
cubicbezier和quadraticbezier也有 是平滑的 方法,该方法检查段是否是"平滑"段,与 给定段。
还有一个 parse_path() 函数将采用SVG路径定义 并返回一个 路径 对象。
< Buff行情>>>> from svg.path import parse_path >>> parse_path('M 100 100 L 300 100') Path(Move(to=(100+100j)), Line(start=(100+100j), end=(300+100j)), closed=False)
类
这些是svg路径段类。有关SVG规范的详细信息,请参见 参数表示。
- 线路(起点,终点)
- 弧(开始、半径、旋转、弧、扫掠、结束)
- 正交贝塞尔(开始、控制、结束)
- cubicbezier(开始,控制1,控制2,结束)
除此之外,还有一个 路径 类,它被实例化 具有一系列路径段:
- 路径(*段)
path 类是一个可变序列,因此它的行为类似于一个列表。 您可以添加到其中并替换路径段等。
< Buff行情>>>> path = Path(Line(100+100j,300+100j), Line(100+100j,300+100j)) >>> path.append(QuadraticBezier(300+100j, 200+200j, 200+300j)) >>> path[0] = Line(200+100j,300+100j) >>> del path[1]
path对象还有一个 d() 方法,该方法将返回 路径段的SVG表示。
< Buff行情>>>> path.d() 'M 200,100 L 300,100 Q 200,200 200,300'
示例
这个svg路径示例绘制一个三角形:
< Buff行情>>>> path1 = parse_path('M 100 100 L 300 100 L 200 300 z')
您可以用许多不同的方式格式化svg路径,所有有效的路径都应该是 接受:
< Buff行情>>>> path2 = parse_path('M100,100L300,100L200,300z')
这些路径应该相等:
< Buff行情>>>> path1 == path2 True
您还可以从对象建立路径:
< Buff行情>>>> path3 = Path(Line(100+100j,300+100j), Line(300+100j, 200+300j), Line(200+300j, 100+100j))
它应该再次等于第一条路径:
< Buff行情>>>> path1 == path2 True
路径是可变序列,您可以切片并附加:
< Buff行情>>>> from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier1
路径还有一个 closed 属性,该属性定义路径是否应该 是否被视为闭合路径。
< Buff行情>>>> from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier2
如果修改路径的方式使其不再可关闭,则它将 不要关闭。
< Buff行情>>>> from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier3
但是,先前设置为关闭的路径将自动关闭如果是的话 进一步修改为可以关闭。
< Buff行情>>>> from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier4
如果结束与开始不一致,则尝试将路径设置为关闭 任何段都会引发错误。
< Buff行情>>>> from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier5
未来功能
- 反转路径。然后,它们应该合理地"向后"绘制,意思是 路径段也需要反转。
- 数学变换可能有意义。
许可证
本模块是麻省理工学院授权的。