如何使用HTML 5画布仅绘制图像的圆形部分?
例如,拍摄照片并仅在画布内绘制脸部。
答案 0 :(得分:6)
实现此目的的方法是使用clip
来定义剪辑区域:
var ctx;
var canvas;
var img = new Image();
img.onload = function() {
canvas = document.getElementById('myCanvas');
ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 60, 0, 6.28, false); //draw the circle
ctx.clip(); //call the clip method so the next render is clipped in last path
ctx.stroke();
ctx.closePath();
ctx.drawImage(img, -190, 0);
};
img.src = "http://www.antiquiet.com/wp-content/uploads/2011/03/Free-Trapper_Remasters_The-Kills-467x311.jpg";
你可以在这里看到一个工作小提琴:http://jsfiddle.net/hJS5B/47/
从我对这个问题的回答中重复使用了代码:Draw multiple circles filled with image content
答案 1 :(得分:0)
在我找到我正在寻找的解决方案之前很久就找到了这个帖子:上面的代码效果很好。但是如果你想一次又一次地绘制图像的圆形区域,例如在onmouseup事件中,您必须保存并恢复上下文的状态。这里解释了更多内容:Can you have multiple clipping regions in an HTML Canvas?