Ответ 1
Что такое путь?
Это серия команд пути (moveTo, lineTo, arcTo и т.д.), которые определяют границу векторной формы. Затем вы можете заполнить и/или погладить путь по желанию.
Что такое использование closePath()
?
Демо: http://jsfiddle.net/YrQCG/5/
// Draw a red path using closePath() in the middle
ctx.beginPath();
ctx.strokeStyle = 'red';
ctx.moveTo(50,100);
ctx.lineTo(100,150);
ctx.lineTo(150,100);
ctx.closePath();
ctx.lineTo(50,50);
ctx.stroke();
// Slide the next path over by 150 pixels
ctx.translate(150,0);
// Draw a blue path using the exact same commands, but without closePath
ctx.beginPath();
ctx.strokeStyle = 'blue';
ctx.moveTo(50,100);
ctx.lineTo(100,150);
ctx.lineTo(150,100);
//ctx.closePath();
ctx.lineTo(50,50);
ctx.stroke();
Использование closePath()
заставляет точку пера вернуться к началу текущего подкаталога, нарисовать линию от текущей точки до этой начальной точки; следующая команда начинается с этой новой точки. Это полезно, если вы хотите нарисовать полностью очерченную фигуру без явного рисования последней строки.
Это эквивалентно вызову lineTo()
с расположением первой точки вашего текущего подпути, за которым следует moveTo()
к той же точке (для установки нового подпути).
-
Как показано выше, мы рисуем символ
V
, используя первыйmoveTo
и следующие две командыlineTo
. Когда мы назовемclosePath
по красному пути, он рисует горизонтальную полосу поперек и заставляет следующую строку начинать с левого верхнего угла. -
Если мы не вызываем
closePath
в синем пути, следующая командаlineTo
продолжается с последней нарисованной точки.
Обратите внимание, что closePath()
не требуется большую часть времени, в отличие от beginPath()
, который вы должны вызывать каждый раз, когда хотите начать рисовать новый путь. (Если вы этого не сделаете, все старые команды рисования пути являются частью следующего чертежа.)