【问题标题】:Change IText color in Fabric.JS canvas (using React + typescript)在 Fabric.JS 画布中更改 IText 颜色(使用 React + typescript)
【发布时间】:2021-05-01 18:30:32
【问题描述】:

我在Canvas 外面有inputtype=color。我有canvas 和一个或多个IText 对象(以及其他对象)。我想要实现的是“在输入更改时,更改所选文本对象的颜色”。

这是我在 React 中的输入

<input type="color" defaultValue={defaultTextColor} ref={myRef} onChange={handleColorChange} />

我可以更改“文本”,但不能更改颜色...

这是我的换色活动

const handleColorChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    const newColor = e.currentTarget.value;
    canvas.getActiveObjects().forEach((element: any) => {
      if(element.type == 'i-text') {
          element.color = newColor; //this doesn't work
          element.text = "new"; // this works
      }
    });
    
    canvas.renderAll();
  }

【问题讨论】:

    标签: html typescript canvas fabricjs


    【解决方案1】:

    首先,文本的颜色在属性fill

    中定义

    那么你需要使用setrenderAll函数。

    这是一个例子

            var canvas = new fabric.Canvas("canvas");
            var myText = new fabric.Text("Hello", {
                top: 100,
                left: 100,
                width: 60,
                height: 70,
                fill: "red",
            });
            setTimeout(() => {
                myText.set("fill", "green");
                canvas.renderAll();
            }, 2000);
    
            canvas.add(myText);
    

    【讨论】:

    • 改变为什么我们必须使用 setTimeout?
    • 抱歉,您不需要使用 setTimeout,如果您在没有输入字段的情况下运行代码,它只是为了显示颜色变化
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多