Кто-нибудь создал инструмент для ручной или лассо-выбора для бумаги, как у вас в Adobe Illustartor?Paper.js инструмент для выбора лассо
Я пытался использовать для этого , но это работает только в том случае, если мой путь выбора попадает в любые другие пути напрямую, а не в том случае, если есть элементы внутри выделения, даже если я делаю это раньше на onMouseUp
.
isInside(rect)
выглядит многообещающим, но он может только проверить, что-то внутри прямоугольника, а не свободного пути.
Вот несколько примеров:
var item1 = Path.Circle(new Point(180, 100), 20);
item1.fillColor = "black";
var item2 = Path.Rectangle(new Point(150, 180), new Size(50, 50));
item2.fillColor = "black";
var selection = new Path([
new Point(50, 50),
new Point(50, 250),
new Point(250, 250),
new Point(250, 150),
new Point(150, 150)
]);
selection.closed = true;
selection.strokeColor = "blue";
selection.fillColor = new Color(0, 0, 50, 0.5);
function selectionContains(item) {
// does not work as expected
return selection.intersects(item);
}
// should be false
console.log(selectionContains(item1));
// should be true but is false
console.log(selectionContains(item2));
Вы ищете субтрактивную булевую операцию. В последнее время была проведена большая работа, связанная с BoolOps, которая включена в Paper.js. Но только для того, чтобы прояснить ситуацию, что вы пытаетесь вытащить? Растеры или векторы? Они работают по-другому –
BoolOps сделал это, см. Ответ ниже. Я не сто процентов удовлетворен, так как они создают и рисуют дополнительную геометрию в Paper.js. Возможно, мне придется добавить предварительную проверку ограничительного прямоугольника по соображениям производительности. Только векторы. Не могу себе представить, как что-то подобное будет работать для растровой графики. –
Если Растровое изображение является прямоугольным (как это обычно бывает), вы можете отрубить (вычесть), используя BoolOps, часть векторного прямоугольника, равную ширине/высоте вашего растрового изображения. Затем установите растровое изображение как mask/background-image вычитаемой формы. –