使用像素精确度清除画布中的特定形状

时间:2017-01-14 16:53:33

标签: javascript canvas

尝试向canvas添加一个形状,然后在不使用clearRect的情况下清除它,这是一个演示

const canvas  = document.createElement('canvas')
canvas.height = 300
canvas.width = 300
const ctx = canvas.getContext('2d')
document.body.appendChild(canvas)

const make = () => {
	ctx.beginPath();
	ctx.moveTo(50, 50);
	ctx.quadraticCurveTo(100, 75, 100, 100);
	ctx.arc(75, 100, 10, 0, 2 * Math.PI)
    ctx.lineWidth = 1
	ctx.stroke()
}

const draw = () => {
	make()
}

const clear = () => {
	ctx.save()
	ctx.globalCompositeOperation = "destination-out";
	make()
	ctx.restore()
}

draw()
clear()
正如你可以注意到的那样,外形不会被清除,它会变得更轻,一些像素不会被移除, 问题是形状相对复杂,我不能使用clearRect,我发现的唯一解决方案是在清除时增加线宽,但更多的是黑客,任何想法如何解决这个问题,是因为抗锯齿?

0 个答案:

没有答案