Как очистить область в форме многоугольника в элементе canvas? - PullRequest
3 голосов
/ 09 декабря 2011

Я использовал функцию clearRect, но не увидел эквивалента для полигонов. Я наивно пытался:

ctx.fillStyle = 'transparent';
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(100,50);
ctx.lineTo(50, 100);
ctx.lineTo(0, 90);
ctx.closePath();
ctx.fill();

Но это просто рисует прозрачную область и не влияет на то, что там уже есть. Есть ли способ очистить полигональные области внутри элемента canvas?

1 Ответ

14 голосов
/ 09 декабря 2011

Вы можете использовать композитинг с операцией, установленной на 'destination-out' для этого:

ctx.globalCompositeOperation = 'destination-out';
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(100,50);
ctx.lineTo(50, 100);
ctx.lineTo(0, 90);
ctx.closePath();
ctx.fill();

Пример:

enter image description here

Попробуйте это на jsFiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...