作用:

根据控制点和半径绘制圆弧路径,

实现机制:

使用当前的描点(前一个moveTo或lineTo等函数的止点)。根据当前描点与给定的控制点1连接的直线,和控制点1与控制点2连接的直线,作为使用指定半径的圆的切线,画出两条切线之间的弧线路径。

语法:ctx.arcTo(x1, y1, x2, y2, radius);

  1. x1:第一个控制点的 x 轴坐标;
  2. y1:第一个控制点的 y 轴坐标;
  3. x2:第二个控制点的 x 轴坐标;
  4. y2:第二个控制点的 y 轴坐标;
  5. radius:圆弧的半径。

示例

  1. const canvas = document.querySelector('.canvas-arc-to')
  2. const ctx = canvas.getContext('2d')
  3. ctx.setLineDash([])
  4. ctx.beginPath()
  5. ctx.moveTo(150, 20)
  6. ctx.arcTo(150, 100, 50, 20, 30)
  7. ctx.stroke()
  8. ctx.fillStyle = 'blue'
  9. // base point
  10. ctx.fillRect(150, 20, 10, 10)
  11. ctx.fillStyle = 'red'
  12. // control point one
  13. ctx.fillRect(150, 100, 10, 10)
  14. // control point two
  15. ctx.fillRect(50, 20, 10, 10)
  16. //
  17. ctx.setLineDash([5, 5])
  18. ctx.moveTo(150, 20)
  19. ctx.lineTo(150, 100)
  20. ctx.lineTo(50, 20)
  21. ctx.stroke()
  22. ctx.beginPath()
  23. ctx.arc(120, 38, 30, 0, 2 * Math.PI)
  24. ctx.stroke()

image.png