Skip to content

PathData

IPathString

字符串路径数据。

支持 SVG + Canvas 的绘图命令。

ts
const data = 'M 0 0 L 100 100 L 0 100 Z'

IPathCommandData

数字路径数据, 使用高性能、纯数字的一维数组。

只支持 Canvas 绘图命令,可通过 PathCreator 快速创建。

ts
const data = [1, 0, 0, 2, 100, 100, 2, 0, 100, 11] // M 0 0 L 100 100 L 0 100 Z

IPathCommandObject

M | L | C | Q | Z 绘图命令的对象,可读性高,方便修改数据,性能一般。

ts
export type IPathCommandObject =
  | MoveToCommandObject
  | LineToCommandObject
  | BezierCurveToCommandObject
  | QuadraticCurveToCommandObject
  | ClosePathCommandObject // M | L | C | Q | Z   canvas可以绘制的命令

// 路径命令对象
export interface MoveToCommandObject {
  name: 'M' //  moveTo
  x: number
  y: number
}
export interface LineToCommandObject {
  name: 'L' // lineTo
  x: number
  y: number
}

export interface BezierCurveToCommandObject {
  name: 'C' // bezierCurveTo
  x1: number
  y1: number
  x2: number
  y2: number
  x: number
  y: number
}

export interface QuadraticCurveToCommandObject {
  name: 'Q' // quadraticCurveTo
  x1: number
  y1: number
  x: number
  y: number
}

export interface ClosePathCommandObject {
  name: 'Z' // closePath
}

绘图命令

SVG 命令

命令命令编码参数数据长度comment
M1x, y3moveTo
m10x, y3moveTo 相对坐标
L2x, y3lineTo
l20x, y3lineTo 相对坐标
H3x2lineToX
h30x2lineToX 相对坐标
V4y2lineToY
v40y2lineToY 相对坐标
C5x1, y1, x2, y2, x, y7bezierCurveTo 三次贝赛尔曲线
c50x1, y1, x2, y2, x, y7bezierCurveTo 相对坐标
S6x2, y2, x, y5smoothBezierCurveTo 平滑的三次贝赛尔曲线
s60x2, y2, x, y5smoothBezierCurveTo 相对坐标
Q7x1, y1, x, y5quadraticCurveTo 二次贝赛尔曲线
q70x1, y1, x, y5quadraticCurveTo 相对坐标
T8x, y3smoothQuadraticCurveTo 平滑的二次贝赛尔曲线
t80x, y3smoothQuadraticCurveTo 相对坐标
A9rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y8ellipticalArc 弧线
a90rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y8ellipticalArc 相对坐标
Z111closePath
z111closePath
R12x, y3catmullRom 平滑曲线 (暂不支持)

canvas 命令

命令命令编码参数数据长度comment
M1x, y3moveTo
L2x, y3lineTo
C5x1, y1, x2, y2, x, y7bezierCurveTo 三次贝赛尔曲线
Q7x1, y1, x, y5quadraticCurveTo 二次贝赛尔曲线
Z111closePath
 
N21x, y, width, height5rect
D22x, y, width, height, radius1, radius2,radius3,radius49roundRect
X23x, y, width, height, radius6roundRect simple
G24cx, cy, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise9ellipse
F25cx, cy, radiusX, radiusY5ellipse simple
O26cx, cy, radius, startAngle, endAngle, anticlockwise7arc
P27cx, cy, radius4arc simple
U28x1, y1, x2, y2, radius6arcTo

Released under the MIT License.