以编程方式调整 paper.js canvas 的大小:未正确重绘超出原始大小的 canvas 部分

Resizing paper.js canvas programmatically: not properly redrawing part of canvas beyond original size

示例:https://jsfiddle.net/gnxdkqgh/5/

  1. 尝试点击 x0.5 - 一切正常
  2. 尝试单击 x2 - canvas 超出原始矩形的部分未正确重绘
  3. 尝试快速连续单击 x2 - 您可以看到它绘制动画虚线,但无法 "clear" canvas。它只是绘制现有的破折号,形成实线。

这是 Paper.js 中的错误还是我做错了什么?

我使用的是最新的 Chrome。如果您无法重现问题,请查看屏幕截图:

问题是您在更改 canvas 的大小时没有让纸张知道您所做的。不要在调整大小函数中设置 canvas 大小,而是设置 paper.view.viewSize,这也会重置 canvas 大小。

在调整大小函数中替换 canvas.width = w; canvas.height = h; paper.view.viewSize.width = w; paper.view.viewSize.height = h;

这将导致纸张同时更改视图大小和基础 canvas 大小 - 请参阅 paperjs.org viewSize doc