0

添加文本元素

function add_text() {   
    var myText = new fabric.Text(text,
    {
        fontSize: size,
        fontFamily: fm,
        strokeStyle: sc,
        fill: fc,
        left: myCanvas.getWidth()/2,
        top: myCanvas.getHeight()/2
    });

    myCanvas.add(myText);
}

更新文本和大小

function chng_txt() {
    var obj = myCanvas.getActiveObject();
    var fm = document.getElementById('up_text').value;
    obj.setText(fm);
    myCanvas.add(obj);
    myCanvas.renderALL();
}

function chng_fs() {
    var obj = myCanvas.getActiveObject();
    var fs = document.getElementById('up_size').value;
    obj.setFontsize(fs);
    myCanvas.add(obj);
    myCanvas.renderALL();
}

删除文本元素

function rmv_txt() {
    var obj = myCanvas.getActiveObject();
    myCanvas.remove(obj);
}

我的问题是

我可以添加文本和更新文本。
但我无法删除已更新的文本元素。

4

1 回答 1

1

实际发生的情况是您在其顶部添加了另一个对象,即在彼此顶部有两个相同的对象,当您删除它时,它只删除了活动对象。

您所要做的就是myCanvas.add(obj);在更新文本时删除该行。所以你的代码看起来像

function chng_fs() {
    var obj = myCanvas.getActiveObject();
    var fs = document.getElementById('up_size').value;
    obj.setFontsize(fs);
    myCanvas.renderAll();
}

还有一件事,当您进行任何更改时渲染画布总是更好,在添加和删除对象之后包括 renderAll() 即使它工作正常并且它不是“renderALL”它应该是“renderAll”,我想你知道这一点,只是发布时的拼写错误,否则您将看不到 text 属性已更改。

于 2012-11-29T16:24:10.167 回答