Paperjs 减去形状的路径无法正常工作

Paperjs subtract path to shape not working properly

使用 Paperjs,我尝试从圆中减去一条路径,但它没有按预期工作。这是我的代码:

// Create circle
var c1 = new Path.Circle(new Point(100, 70), 50);
c1.fillColor = 'red';

// Create path
var eraser = new paper.Path({strokeColor: 'black', strokeWidth: 20, strokeCap: 'round'});
eraser.add(new paper.Point(20, 20)); 
eraser.add(new paper.Point(100, 80)); 
eraser.add(new paper.Point(150, 150)); 
eraser.fillColor = 'white';
eraser.opacity = 0.6;

// Subtract
result = c1.subtract(eraser);
result.selected = true;
result.opacity = 0.8;
result.fillColor = 'pink';

看起来路径被视为多边形,而不是减去时的线:

这是一个 jsFiddle:https://jsfiddle.net/Imabot/785ergpy/35/

是的,这是因为 Paper.js 使用路径填充几何图形执行布尔运算,忽略笔划。
如果您从示例中删除笔划,这一点会更加明显(请参阅此 sketch)。

如果你想减去笔画,你需要做的是先把它变成路径。
不幸的是,Paper.js 还没有这个功能,即使它已经计划了很长时间并且作为实验版本存在(参见这个 issue)。
因此,您必须使用此实验性功能或使用矢量绘图软件(如 Adob​​e Illustrator),并将笔划路径导出为 SVG,然后再与 Paper.js.

一起使用