在fabricJS中的画布上加载JSON后,文本位置发生了变化

时间:2017-12-04 07:15:09

标签: javascript html5 html5-canvas position fabricjs

我在画布上创建新鲜时以及在画布上加载JSON时观察到文本位置发生了变化。通常在画布上的移动元素上,左侧和顶部的值最多可达14个小数位,当加载JSON时,位置最多可达到两个位置。

e.g。在picture1文本中,保存并加载JSON后左侧位置为294.63668348469565,文本顶部为202.79140935082407,位置略有变化,但左侧为294.63,顶部为202.80(图2) picture1 picture2

我猜最多14位十进制是非常精确的,更少的小数位可以控制这种变化吗?

2 个答案:

答案 0 :(得分:1)

通过defualt精度值为2。

如果您想要更改,可以使用NUM_FRACTION_DIGITS

fabric.Object.NUM_FRACTION_DIGITS = value;

在你的情况下价值14。

答案 1 :(得分:0)

所以解决了问题,不是最好的解决方案,但工作正常。

首先,对于文本的宽度和高度的捕获,感谢@AndreaBogazzi,因此在将项目加载到画布上并对其进行渲染后重新分配值。

但是对于curvedText元素观察到相同的问题所以我做了一些解决方法,首先我得到现有的curvesText元素props = obj.toObject()然后var textSample = new fabric.CurvedText(obj.getText(), props)的所有属性,然后:< / p>

canvas.getObjects().splice(key,1) //@ remove the old curved text element

canvas.add(textSample) //@ add the curved text (will be added in last)

canvas.getObjects().splice(key,0,canvas.getObjects().pop()); //@ reposition it to the old curved object position

并渲染它并且它有效。

我相信可能还有其他更好的方法,而不是重新创建元素,然后执行所有修复步骤。