使用canvas的arc方法
circleImg(ctx, img, x, y, r) { ctx.save(); var d =2 * r; var cx = x + r; var cy = y + r; ctx.arc(cx, cy, r, 0, 2 * Math.PI); ctx.clip(); ctx.drawImage(img, x, y, d, d); ctx.restore(); }
扫描小程序码分享
使用canvas的arc方法
circleImg(ctx, img, x, y, r) { ctx.save(); var d =2 * r; var cx = x + r; var cy = y + r; ctx.arc(cx, cy, r, 0, 2 * Math.PI); ctx.clip(); ctx.drawImage(img, x, y, d, d); ctx.restore(); }
circleImg(ctx, img, x, y, r) {
ctx.save();
var d =2 * r;
var cx = x + r;
var cy = y + r;
ctx.arc(cx, cy, r, 0, 2 * Math.PI);
ctx.clip();
ctx.closePath();
ctx.drawImage(img, x, y, d, d);
ctx.beginPath();
ctx.restore();
}
ctx.clip(); 只能操作一次,如需操作多次需要 ctx.save(); ctx.restore();
ctx.save(); //先调用 ctx.save(),不然的话ios有Bug,不能绘制第二次,比如你绘制一个有圆角的矩形,再绘制一个圆头像,如果不调用save是不行的 ctx.beginPath(); //开始绘制 ctx.arc(width / 2 + left, height / 2 + top, width / 2, 0, Math.PI * 2, false); ctx.clip(); ctx.drawImage(imgInfo.img, left, top, width, height); // 推进去图片 ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 还可以继续绘制
绘图方案可以尝试下 https://github.com/Kujiale-Mobile/Painter 的实现方案,在绘制图片时,把 borderRadius 设置为一半的长度,就时圆形了
之前画的图 有保存上下文,然后再drawImage吗
是的
你想让 图片盖住画的圆吗
就是我遇到个奇怪的问题,图片是最后画上去的,但图片却被前面画的给盖住了,这个问题大概是什么原因呢?
收藏
https://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=0002c4eb63c0e0790646b571c5b400&token=1586959053&lang=zh_CN
有空帮我看看我的问题
- -同道中人。。。