Я новичок в paperjs. Я не могу понять, в чем разница между Shape.Rectangle и Path.Rectangle. Если path.Rectangle создает прямоугольник с путем, то что это значит, поскольку вывод обоих методов одинаков
разница между shape.rectangle и path.rectangle в paperjs
Ответы (2)
Path
и Shape
— это разные классы с разными методами рисования, но результат будет одинаковым.
Однако я заметил разницу в масштабировании: Shape
изменяет strokeWidth
, а Path
оставляет без изменений.
path = new Path.Rectangle([200, 100], [10, 100]);
path.strokeColor = 'black';
path.scale(10, 1);
shape = new Shape.Rectangle([200, 220], [10, 100]);
shape.strokeColor = 'red';
shape.scale(10, 1);
Причина, по которой вы видите эту разницу в масштабировании, связана с флагом item.applyMatrix
. Это должно быть довольно хорошо объяснено в этих двух ссылках:
https://groups.google.com/forum/#!topic/paperjs/4EIRSGzcaUI http://paperjs.org/reference/item/#applymatrix
По умолчанию элементы Path применяют преобразования непосредственно к своим сегментам, поэтому штрих выглядит однородным.
Элементы формы, с другой стороны, не могут передать преобразование своему содержимому, они всегда сохраняют их в матрице (и shape.applyMatrix
всегда false
).
Но вы также можете визуализировать элементы Shape с однородным штрихом, используя item.strokeScaling
:
http://paperjs.org/reference/item/#strokescaling