我在画布上创建新鲜时以及在画布上加载JSON时观察到文本位置发生了变化。通常在画布上的移动元素上,左侧和顶部的值最多可达14个小数位,当加载JSON时,位置最多可达到两个位置。
e.g。在picture1文本中,保存并加载JSON后左侧位置为294.63668348469565,文本顶部为202.79140935082407,位置略有变化,但左侧为294.63,顶部为202.80(图2) picture1 picture2
我猜最多14位十进制是非常精确的,更少的小数位可以控制这种变化吗?
答案 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
并渲染它并且它有效。
我相信可能还有其他更好的方法,而不是重新创建元素,然后执行所有修复步骤。