canvas绘图如何在绘制的无规则图形内填充图片
首先:利用canvas的beginPath、moveTo、lineTo、closePath方法去绘制一个你想要的图形!
ctx.beginPath()
ctx.moveTo(points[0][0], points[0][1])
points.forEach((item, i) => {
if (i != 0) {
ctx.lineTo(item[0], item[1])
}
})
ctx.closePath()
ctx.strokeStyle = "rgba(15, 206, 233, 1)";
ctx.stroke()
遇到的问题:这时候一定要用 stroke() 来结束绘制;(这里就是我遇到的坑 我没有用stroke收尾直接填充图片 用fill()结束 没有效果 也尝试了其他方式 都不行!)
然后:再去填充图片 用createPattern方法去填充图片!
ctx.fillStyle = ctx.createPattern(img, 'repeat')
ctx.fillStyle = "rgba(80, 168, 225, 0.69)"
ctx.fill()
这里可能就有一些对canvas不熟的小伙伴 再次遇到坑!
遇到的问题:img如何配置 配置完img 没有效果! 直接上代码!
let img = new Image();
img.src = require('../assets/images/map/carway.png')
img.onload = function () {
ctx.beginPath()
ctx.moveTo(points[0][0], points[0][1])
points.forEach((item, i) => {
if (i != 0) {
ctx.lineTo(item[0], item[1])
}
})
ctx.closePath()
ctx.strokeStyle = "rgba(15, 206, 233, 1)";
ctx.stroke()
}
这里一定要用到img.onload 的方法去包着 不然会遇到img 时有时无的问题
对你有用给个赞呗!