在 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);