绘制路径然后使用globalCompositeOperation = "destination-out"
绘制完全相同的路径时:
function drawPath(ctx){
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(120, 120);
ctx.bezierCurveTo(30, 40, 30, 40, 40, 120);
ctx.lineTo(0, 0);
ctx.fill();
}
drawPath(ctx);
ctx.globalCompositeOperation = "destination-out";
drawPath(ctx);
然后在反对边缘上留下剩余物。这在Firefox和Chrome中都会发生。
我有什么办法可以删除它们(或者不让它们出现),如果没有,那么预计会发生这种情况吗?
答案 0 :(得分:2)
假设必须使用 a 的Alpha通道/不透明度绘制一个消除锯齿的像素,然后删除具有相同不透明度的像素,则绘制后的最终不透明度将为( a *(1 - a ))。
因此,如果 a 介于0%和100%之间,那么 a = 50%时,最终不透明度的最大值将为25%。
因此,这些工件预期。
但是如果你要为 n 时间再次移除具有相同不透明度的像素,那么最终的不透明度将是( a *(1 - a < / em>) n ),其最大值将继续下降。因此,使用destination-out
绘制足够的时间可能会删除所有工件。我认为8次就足够了。试一试:http://jsfiddle.net/dXVR7/