Canvas 2D API的接口Path2D用来声明路径,此路径可用于CanvasRenderingContext2D对象。CanvasRenderingContext2D接口的路径方法也存在于Path2D这个接口中,允许在canvas中根据需要创建可以保留并重用的路径。
Path2D.addPath(Path2D path)
添加路径到当前路径。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| path | Path2D | 是 | 添加的Path2D路径。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.rect(30, 30, 100, 100);
const path1 = canvas.createPath2D();
path1.rect(40, 40, 50, 50);
path.addPath(path1);
ctx.stroke(path);
})
.exec(); Path2D.arc(number x, number y, number radius, number startAngle, number endAngle, boolean counterclockwise)
添加一段圆弧路径。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| x | number | 是 | 圆心横坐标。 |
| y | number | 是 | 圆心纵坐标。 |
| radius | number | 是 | 圆形半径,必须为正数。 |
| startAngle | number | 是 | 圆弧开始角度。 |
| endAngle | number | 是 | 圆弧结束角度。 |
| counterclockwise | boolean | 否 | 是否逆时针绘制。如果传true,则会从endAngle开始绘制到startAngle。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.arc(75, 75, 50, 0, Math.PI * 2, true);
ctx.stroke(path);
})
.exec(); Path2D.arcTo(number x1, number y1, number x2, number y2, number radius)
通过给定的控制点和半径添加一个圆弧。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| x1 | number | 是 | 第一个控制点的横坐标。 |
| y1 | number | 是 | 第一个控制点的纵坐标。 |
| x2 | number | 是 | 第二个控制点的横坐标。 |
| y2 | number | 是 | 第二个控制点的纵坐标。 |
| radius | number | 是 | 圆弧的半径,必须为非负值。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.moveTo(200, 20);
path.arcTo(200, 130, 50, 20, 40);
ctx.stroke(path);
})
.exec(); Path2D.bezierCurveTo(number cp1x, number cp1y, number cp2x, number cp2y, number x, number y)
绘制三次贝塞尔曲线。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| cp1x | number | 是 | 第一个控制点的横坐标。 |
| cp1y | number | 是 | 第一个控制点的纵坐标。 |
| cp2x | number | 是 | 第二个控制点的横坐标。 |
| cp2y | number | 是 | 第二个控制点的纵坐标。 |
| x | number | 是 | 结束点横坐标。 |
| y | number | 是 | 结束点纵坐标。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.bezierCurveTo(30, 100, 200, 100, 200, 20);
ctx.stroke(path);
})
.exec(); Path2D.closePath()
关闭当前子路径。会以直线连接当前子路径的起点和最后一个点。
起始版本: 2.0.2
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.bezierCurveTo(20, 100, 200, 100, 200, 20);
path.closePath();
ctx.stroke(path);
})
.exec(); Path2D.ellipse(number x, number y, number radiusX, number radiusY, number rotation, number startAngle, number endAngle, boolean counterclockwise)
添加椭圆弧路径。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| x | number | 是 | 椭圆圆心横坐标。 |
| y | number | 是 | 椭圆圆心纵坐标。 |
| radiusX | number | 是 | 椭圆长轴半径,必须为非负数。 |
| radiusY | number | 是 | 椭圆短轴半径,必须为非负数。 |
| rotation | number | 是 | 椭圆旋转角度。 |
| startAngle | number | 是 | 圆弧开始角度。 |
| endAngle | number | 是 | 圆弧结束角度。 |
| counterclockwise | boolean | 否 | 是否逆时针绘制。如果传true, 则会从endAngle开始绘制到startAngle。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.ellipse(80, 50, 60, 30, 0, 0, Math.PI * 2, false);
ctx.stroke(path);
})
.exec(); Path2D.lineTo(number x, number y)
增加一个新点,然后创建一条从上次指定点到目标点的线。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| x | number | 是 | 结束点横坐标。 |
| y | number | 是 | 结束点纵坐标。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.moveTo(10, 10);
path.lineTo(90, 120);
ctx.stroke(path);
})
.exec(); Path2D.moveTo(number x, number y)
把路径移动到画布中的指定点,不创建线条。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| x | number | 是 | 点的横坐标。 |
| y | number | 是 | 点的纵坐标。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.moveTo(10, 10);
path.lineTo(90, 120);
ctx.stroke(path);
})
.exec(); Path2D.quadraticCurveTo(number cpx, number cpy, number x, number y)
绘制二次贝塞尔曲线。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| cpx | number | 是 | 控制点横坐标。 |
| cpy | number | 是 | 控制点纵坐标。 |
| x | number | 是 | 结束点横坐标。 |
| y | number | 是 | 结束点纵坐标。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.moveTo(50, 120);
path.quadraticCurveTo(50, 80, 150, 100);
ctx.stroke(path);
})
.exec(); Path2D.rect(number x, number y, number width, number height)
绘制一个矩形路径。
起始版本: 2.0.2
参数:
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| x | number | 是 | 矩形起始点的横坐标。 |
| y | number | 是 | 矩形起始点的纵坐标。 |
| width | number | 是 | 矩形的宽度,正数向右延伸,负数向左延伸。 |
| height | number | 是 | 矩形的高度,正数向右下延伸,负数向上延伸。 |
示例:
has.createSelectorQuery().select('#myCanvas')
.node((res) => {
const canvas = res.node;
const ctx = canvas.getContext('2d');
const path = canvas.createPath2D();
path.rect(10, 10, 100, 100);
ctx.fill(path);
})
.exec();