2009-08-22 247 views

回答

0

是的,应该可以用globalCompositeOperation。如果我没有弄错,默认的“source-over”值应该与SVG的“evenodd”相对应(否则,请尝试更少的人看看最终的图像是否相同)。

+1

这工作,如果你正在绘制一个以上的形状。但是,如果你正在绘制一条路径,它不会。任何其他想法? – devongovett 2009-11-09 03:10:38

+0

复合!=填充。他们是不同的概念。全局复合操作设置不应该对填充规则有任何影响 – jwfearn 2011-03-17 18:38:39

0

我问自己同样的问题,并碰到this Mozilla Bugreport

似乎它得到由bugreporters提出了WHATWG(帆布规格):

克里斯·琼斯2011-06-10:

让我们等待,直到文档这个天赋是寻找固体上whatwg(我今天会发布)。

0

这是一个非常古老的问题,这样的事情一定是在不同的时间,但因为很久以前,你可以传递一个fillrule参数的fill()方法。 此fillrule可以是"nonzero",默认值,或"evenodd"

var ctx = c.getContext('2d'); 
 
drawPath(); 
 
ctx.fill(); 
 
ctx.translate(70, 0); 
 
drawPath(); 
 
ctx.fill('evenodd'); 
 
ctx.translate(70, 0); 
 
drawPath(); 
 
ctx.stroke(); 
 

 
function drawPath(){ 
 
    ctx.beginPath(); 
 
    ctx.arc(30,30,20,0,Math.PI*2); 
 
    ctx.lineTo(60,60); 
 
    ctx.lineTo(0,0); 
 
    ctx.closePath(); 
 
}
<canvas id="c"></canvas>