2010-09-24 21 views
9

Hay una forma de implementar un borrador (que no sea el uso de un lápiz blanco?).HTML HTML5 borrador

Estoy usando capas, tengo una imagen debajo del lienzo, entonces, si el borrador pinta en blanco, el usuario lo notará ya que la imagen de abajo no es blanca.

Respuesta

0

establecer el color del lápiz a transparente:

context.fillStyle = "rgba(255,0,0,0)"; 

en rgba() formato, el último es el canal alfa, 0 es totalmente transparente

+1

No funciona. Los alambiques del 'borrador' se dibujan en rojo (el color del lápiz de dibujo real). – Valentina

+0

intente configurar el color como simplemente "transparente" (http://dev.w3.org/csswg/css3-color/#transparent), o tal vez 'strokestyle' en lugar de' fillstyle' – Javier

+0

= (Nada. Ya lo intenté context.strokeStyle = "rgba (0,0,0,0)"; y context.fillStyle = "rgba (0,0,0,0)"; ¿Alguna idea? – Valentina

16

Básicamente, establezca globalCompositeOperation en y pinte usando un color con opacidad cero, p. Ej. "rgba(0,0,0,0)" como lo estabas intentando.

La pregunta se responde en un poco más de detalle aquí:

"Erasing" in html5 canvas

3
function eraser() 
{         
context.strokeStyle = "rgb(255, 255, 255)"; 
context.globalCompositeOperation = "copy"; 
context.strokeStyle = ("rgba(255,255,255,255)"); /* or */ context.fillStyle = "rgba(255,0,0,0)"; 
} 

ambos trabajaron en mi caso!

0

Código de goma transparente usando globalCompositeOperation "destino de salida" y "fuente-over"

var handleMouseMove = function (event) { 
    midPt = new createjs.Point(oldPt.x + stage.mouseX>>1, oldPt.y+stage.mouseY>>1); 

    if(curTool.type=="eraser"){ 

     var tempcanvas = document.getElementById('drawcanvas'); 
     var tempctx=tempcanvas.getContext("2d"); 
     tempctx.beginPath(); 
     tempctx.globalCompositeOperation = "destination-out"; 
     tempctx.arc(midPt.x, midPt.y, 20, 0, Math.PI * 2, false);  
     tempctx.fill(); 
     tempctx.closePath(); 
     tempctx.globalCompositeOperation = "source-over"; 
     drawingCanvas.graphics.clear(); 

     // keep updating the array for points 
     arrMidPtx.push(midPt.x); 
     arrMidPty.push(midPt.y); 
     stage.addChild(drawingCanvas); 
     stage.update(); 

    } 

he utilizado easeljs aquí sin embargo, el código es independiente de la misma y se puede integrar con cualquier javascript dibujo HTML5 Canvas código

+0

¿Podría explicar el código más adelante, por favor? – utdev