Canvas / Fabric.js .loadFromJSON()替换整个画布

积雨云

我有2个JSON对象:

  • jSONObject1

    {“ type”:“ group”,“ originX”:“ left”,“ originY”:“ top”,“ left”:0,“ top”:0,“ objects:[{” type“:” line“ ,“笔画”:“灰色”,“ x1”:430,“ x2”:20.0,“ y1”:430,“ y2”:430},{“ type”:“ line”,“ stroke”:“ grey” ,“ x1”:430,“ x2”:20.0,“ y1”:20.0,“ y2”:20.0},{“ type”:“ line”,“ stroke”:“灰色”,“ x1”:430,“ x2“:430,” y1“:20.0,” y2“:430},{” type“:” line“,” stroke“:” grey“,” x1“:20.0,” x2“:20.0,” y1“ :430,“ y2”:20.0}]}

包含要在画布上绘制的构成建筑物平面图的线的阵列

  • jSONObject2

    {“ type”:“ group”,“ originX”:“ left”,“ originY”:“ top”,“ left”:0,“ top”:0,“ objects”:[{“ type”:“ rect” ,“ originX”:“左”,“ originY”:“顶部”,“左”:45,“顶部”:-405,“宽度”:60,“高度”:60,“填充”:“红色”} ,{“ type”:“ rect”,“ originX”:“ left”,“ originY”:“ top”,“ left”:105,“ top”:-405.0,“ width”:60,“ height”:60 ,“ fill”:“ red”},{“ type”:“ rect”,“ originX”:“ left”,“ originY”:“ top”,“ left”:165,“ top”:-405.0,“ width “:60,”高度“:60,”填充“:”蓝色“},{“ type”:“ rect”,“ originX”:“ left”,“ originY”:“ top”,“ left”:225,“ top”:-405.0,“ width”:60,“ height”:60, “ fill”:“ blue”}]}

包含要在画布上绘制的矩形数组,这些矩形显示了平面图中不同点的度量。

我正在使用.loadFromJSON(...)在画布上渲染所需的线/矩形。问题在于,每次调用此函数时,它都会完全替换画布上的所有内容,而不是在平面图上覆盖平面图度量矩形。

将2个独立的JSON对象呈现到Canvas元素上而不覆盖另一个的最佳方法是什么?

我看过这个GitHub问题,它建议使用fromObject()方法从JSON添加对象,而无需清除整个画布。从理论上讲,这听起来像是一个不错的主意...此页面还引出了2个jsfiddle“示例”,介绍了如何使用此fromObject方法,其中一个甚至不起作用,另一个似乎起作用,但尚不清楚。

尝试使用loadFromJSON()(覆盖):

Canvas canvas = document.getElementById("myCanvas");
canvas.loadFromJSON(JSON.stringify(jSONObject1))
canvas.loadFromJSON(JSON.stringify(jSONObject2))
canvas.renderAll();

尝试使用fromObject()(无效)

var jSONObjects = jSONObject1.concat(jSONObject2);
for (var i = 0; i < jSONObjects.length; i++) {
    var klass = fabric.util.getKlass(jSONObjects[i].type);
    var obj = klass.fromObject(jSONObjects[i]);
    canvas.add(obj);
}
canvas.renderAll();

提前致谢。

PromInc

我从未尝试过fromObject()方法。

我先尝试使用concat合并两个JSON对象,然后再使用loadFromJson()。

var finalFloorPlan = jSONObject1.concat(jSONObject2);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Fabric.js 1.3.0中使用canvas.loadFromJSON时不加载图像

来自分类Dev

fabric.js canvas.on('mouse:down')

来自分类Dev

画布旋转 - Fabric js

来自分类Dev

Fabric.js-canvas.toDatalessJSON无法按预期工作

来自分类Dev

fabric.js不使用SVG文件导出Canvas

来自分类Dev

在Canvas Fabric JS中的元素上添加删除按钮

来自分类Dev

Download Canvas as PNG in fabric.js giving network Error

来自分类Dev

Fabric.js画布图像抗锯齿

来自分类Dev

在Fabric.js中全屏显示画布

来自分类Dev

缩放fabric.js画布对象

来自分类Dev

Fabric.js画布混合模式

来自分类Dev

保存用fabric.js创建的画布

来自分类Dev

使用fabric.js的全屏画布模式

来自分类Dev

Fabric.js画布上的GIF动画

来自分类Dev

在Fabric.js中将Canvas下载为PNG,从而导致网络错误

来自分类Dev

如果有多个Fabric JS canvas,如何管理内存?

来自分类Dev

使用fabric.js和canvas在Line上设置固定高度

来自分类Dev

如何在html5 canvas中绘制Fabric js strokeRect?

来自分类Dev

如何获取在Fabric JS中以JSON格式上传的Canvas上项目的ID?

来自分类Dev

Vaadin canvas fabric.js没有用户交互

来自分类Dev

在相同的html canvas元素上放置并创建Fabric画布后,无法选择对象

来自分类Dev

如何使用Fabric.js实现画布平移

来自分类Dev

Fabric.js在画布上的图像上分层文本

来自分类Dev

使用Fabric.js选择画布上的所有对象

来自分类Dev

使用fabric.js在画布上免费绘制

来自分类Dev

调整画布的背景图像大小-Fabric.js

来自分类Dev

Fabric.js橡皮擦问题画布

来自分类Dev

fabric.js画布监听键盘事件吗?

来自分类Dev

单击Fabric.js画布时如何获取图像的src?