在 paperjs 中将 canvas 数据拟合到另一个 canvas

Fitting a canvas data to another canvas in paperjs

我正在尝试将 paperjs canvas 放入另一个 canvas。我正在使用 importJSON 将 canvas 导入当前的 paperjs canvas 对象。但是,2 canvases 的大小不同,因此并非所有内容都可见。我试图设置 paperjs 项目的视图,但这没有用。这是我试过的:

canvasObj.project.importJSON(tabData.dataUrl);
canvasObj.project.view.viewSize = new paper.Size(window.innerWidth - this.canvasWidthSubtract, window.innerHeight - this.canvasHeightSubtract);

在此,我首先使用 importJSON 加载 canvas 并设置视图。但是,并非所有内容都是可见的。如何使 importJSON 的内容适合 canvas.

您可以简单地调整导入图层的大小以适应第二个 canvas 的 View 的边界。

您可以使用 item.fitBounds 方法轻松完成此操作,如下图所示。

const imported = project.importJSON(`[["Layer",{"applyMatrix":true,"selected":true,"children":[["Path",{"applyMatrix":true,"selected":true,"segments":[[351.69873,371.5],[395,296.5],[438.30127,371.5]],"closed":true,"fillColor":[0.91373,0.91373,1]}],["Path",{"applyMatrix":true,"selected":true,"segments":[[479.54915,481.55283],[454.54915,463.38926],[445,434],[454.54915,404.61074],[479.54915,386.44717],[510.45085,386.44717],[535.45085,404.61074],[545,434],[535.45085,463.38926],[510.45085,481.55283]],"closed":true,"fillColor":[0.91373,0.91373,1]}]]}]]`)
const layer = imported.pop()

layer.fitBounds(view.bounds)

上面的示例导入通过 project.exportJSON 导出的 JSON,然后调整它的大小以始终适合导入的视图 bounds/size。