使用全局复合操作时清除画布 = 'source-in'



我正在画布上画一张带面具的脸。脸上只有满了口罩的地方才会露出。

function drawface(){ this.ctx.globalCompositeOperation = 'source-in';
this.ctx.drawImage(msk, 0, 0, msk_w, msk_w, x, marg, h_c, h_c );
this.ctx.drawImage(this.face, 0, 0, w_f, h_f, x+x_offset, marg+y_offset, h_c, h_c);}

它工作得很好,但我想在拖动时移动面部。所以我需要重置画布,然后重新绘制人脸。但当我做时

function resetCanvas(){
this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
}

我得到一个空白画布,调用resetCanvas后drawface函数就不再工作了。我也尝试过保存和重置,但找不到有效的解决方案。有人能帮忙吗?谢谢

绘制面后需要重置globalCompositeOperation。
this.ctx.globalCompositeOperation = 'source-over';

最新更新