canvas.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * @description Draw a polyline path
  3. * @param {Object} ctx Canvas 2d context
  4. * @param {Array} points The points that makes up a polyline
  5. * @param {Boolean} beginPath Whether to execute beginPath
  6. * @param {Boolean} closePath Whether to execute closePath
  7. * @return {Undefined} Void
  8. */
  9. export function drawPolylinePath (ctx, points, beginPath = false, closePath = false) {
  10. if (!ctx || points.length < 2) return false
  11. if (beginPath) ctx.beginPath()
  12. points.forEach((point, i) =>
  13. point && (i === 0 ? ctx.moveTo(...point) : ctx.lineTo(...point)))
  14. if (closePath) {
  15. ctx.closePath()
  16. ctx.draw()
  17. }
  18. }
  19. /**
  20. * @description Draw a bezier curve path
  21. * @param {Object} ctx Canvas 2d context
  22. * @param {Array} points The points that makes up a bezier curve
  23. * @param {Array} moveTo The point need to excute moveTo
  24. * @param {Boolean} beginPath Whether to execute beginPath
  25. * @param {Boolean} closePath Whether to execute closePath
  26. * @return {Undefined} Void
  27. */
  28. export function drawBezierCurvePath (ctx, points, moveTo = false, beginPath = false, closePath = false) {
  29. if (!ctx || !points) return false
  30. if (beginPath) ctx.beginPath()
  31. if (moveTo) ctx.moveTo(...moveTo)
  32. points.forEach(item => (item && ctx.bezierCurveTo(...item[0], ...item[1], ...item[2])))
  33. if (closePath) {
  34. ctx.closePath()
  35. ctx.draw()
  36. }
  37. }
  38. export default {
  39. drawPolylinePath,
  40. drawBezierCurvePath
  41. }