clear Canvas when using globalCompositeOperation = 'source-in'

256 Views Asked by At

I'm drawing a face in a canvas with a mask. the face is apearing only where the mask is full.

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);}

it's working fine, but I want to move the face on drag. So I need to reset the canvas, then redraw the face. But when I do

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

I get a blank canvas, and the drawface function don't work any more after resetCanvas is called. I tried with save and reset too, but I couldn't find a working solution. Can any one help please? thanks !

1

There are 1 best solutions below

0
Rom On

Needed to reset globalCompositeOperation after drawing the face.

this.ctx.globalCompositeOperation = 'source-over';