在 Fabric JS IText 和 Textbox 之间轻松转换?
Easily convert between Fabric JS IText and Textbox?
有没有一种方法可以轻松地将 Fabric JS IText 转换为 TextBox(1.6.0 中的新功能),反之亦然,而无需费力地读取和设置其中的每一个 属性,即一些快速的它们之间的映射方式?
谢谢。
你可以轻松做到
var text = oldItext.text;
var textobj = oldItext.toObject();
delete textobj.text;
delete textobj.type;
var clonedtextobj = JSON.parse(JSON.stringify(textobj));
var textbox = new fabric.Textbox(text, clonedtextobj);
关于使用 json 的注意事项:
Fabricjs 中的普通 toObject 方法不处理深度克隆。因此您创建的新文本框将与旧 itext 共享相同的样式对象。在您从 1 个副本创建 2 个副本之前,这不一定是坏事。
如果您不使用样式,更快的方法是:
var text = oldItext.text;
var textobj = oldItext.toObject();
delete textobj.type;
var textbox = new fabric.Textbox(text, textobj);
有没有一种方法可以轻松地将 Fabric JS IText 转换为 TextBox(1.6.0 中的新功能),反之亦然,而无需费力地读取和设置其中的每一个 属性,即一些快速的它们之间的映射方式?
谢谢。
你可以轻松做到
var text = oldItext.text;
var textobj = oldItext.toObject();
delete textobj.text;
delete textobj.type;
var clonedtextobj = JSON.parse(JSON.stringify(textobj));
var textbox = new fabric.Textbox(text, clonedtextobj);
关于使用 json 的注意事项:
Fabricjs 中的普通 toObject 方法不处理深度克隆。因此您创建的新文本框将与旧 itext 共享相同的样式对象。在您从 1 个副本创建 2 个副本之前,这不一定是坏事。
如果您不使用样式,更快的方法是:
var text = oldItext.text;
var textobj = oldItext.toObject();
delete textobj.type;
var textbox = new fabric.Textbox(text, textobj);