Fabric.js、Darkroom.js 和 devicePixelRatio 偏移量

Fabric.js, Darkroom.js, and devicePixelRatio offset

我在Darkroom.js GitHub 页面上问过这个问题,但它似乎并不特别活跃,所以我也在这里问。总的来说,这是一个很棒的插件,但我在 Retina 屏幕上进行了一些测试后遇到了问题。

在 devicePixelRatio 为 1 的浏览器上,一切正常。在更高的值上,我得到的结果是:

测试后,我注意到网站的其他区域也存在此问题,我没有使用 darkroom.js,而只使用 Fabric.js 或标准 Canvas。做一些研究让我发现:

var c = canvas.getElement();
var w = c.width, h = c.height;
c.setAttribute('width', w * window.devicePixelRatio);
c.setAttribute('height', h * window.devicePixelRatio);
c.getContext('2d').scale(window.devicePixelRatio, window.devicePixelRatio);

在这些情况下,这似乎可以解决问题。

然而,对于 darkroom.js,我却没有这么幸运地找到了解决方法。有没有人遇到过这个问题或类似问题,是否有任何已知的解决方案?我使用的是此处找到的最新版本:http://mattketmo.github.io/darkroomjs

我不确定这是否对其他人特别有帮助,但也许它会节省一些时间。

回到这里并对 Darkroom.js 进行了一些更改后,我发现我的更改在其他方面(例如裁剪)引起了问题,因此不值得整理。为 Fabric.js 切换到使用 1.5 版实际上解决了我在 Darkroom 中看到的问题,尽管 Fabric.js 1.6 本身工作正常。 1.5 版一直有效,所以我坚持使用它。