CanvasContext.bezierCurveTo(number cp1x, number cp1y, number cp2x, number cp2y, number x, number y)

创建三次方贝塞尔曲线路径。曲线的起始点为路径中前一个点。

参数

number cp1x

第一个贝塞尔控制点的 x 坐标

number cp1y

第一个贝塞尔控制点的 y 坐标

number cp2x

第二个贝塞尔控制点的 x 坐标

number cp2y

第二个贝塞尔控制点的 y 坐标

number x

结束点的 x 坐标

number y

结束点的 y 坐标

示例代码

  1. const ctx = wx.createCanvasContext('myCanvas')
  2. // Draw points
  3. ctx.beginPath()
  4. ctx.arc(20, 20, 2, 0, 2 * Math.PI)
  5. ctx.setFillStyle('red')
  6. ctx.fill()
  7. ctx.beginPath()
  8. ctx.arc(200, 20, 2, 0, 2 * Math.PI)
  9. ctx.setFillStyle('lightgreen')
  10. ctx.fill()
  11. ctx.beginPath()
  12. ctx.arc(20, 100, 2, 0, 2 * Math.PI)
  13. ctx.arc(200, 100, 2, 0, 2 * Math.PI)
  14. ctx.setFillStyle('blue')
  15. ctx.fill()
  16. ctx.setFillStyle('black')
  17. ctx.setFontSize(12)
  18. // Draw guides
  19. ctx.beginPath()
  20. ctx.moveTo(20, 20)
  21. ctx.lineTo(20, 100)
  22. ctx.lineTo(150, 75)
  23. ctx.moveTo(200, 20)
  24. ctx.lineTo(200, 100)
  25. ctx.lineTo(70, 75)
  26. ctx.setStrokeStyle('#AAAAAA')
  27. ctx.stroke()
  28. // Draw quadratic curve
  29. ctx.beginPath()
  30. ctx.moveTo(20, 20)
  31. ctx.bezierCurveTo(20, 100, 200, 100, 200, 20)
  32. ctx.setStrokeStyle('black')
  33. ctx.stroke()
  34. ctx.draw()

CanvasContext.bezierCurveTo - 图1

针对 moveTo(20, 20) bezierCurveTo(20, 100, 200, 100, 200, 20) 的三个关键坐标如下:

  • 红色:起始点(20, 20)
  • 蓝色:两个控制点(20, 100) (200, 100)
  • 绿色:终止点(200, 20)