我使用此代码使用textbox
在canvas
中添加fabric js
,
var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
left: getCardLeft() + 100,
top: getCardTop() + 10,
width: 200,
height: 20,
fontFamily: 'Helvetica',
fill: getColorPickerForegroundColor(),
fontWeight: '',
fontSize: parseInt('25'),
originX: 'center',
hasRotatingPoint: true,
centerTransform: true,
});
canvas.add(textSample);
成功将textbox
添加到canvas
。
现在,如果我尝试使用此命令 bold
canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();
工作,但在尝试将其更改为正常时,
canvas.getActiveObject().set("fontWeight", "");
canvas.getActiveObject().set("fontWeight", "100");
canvas.getActiveObject().set("fontWeight", "normal");
canvas.renderAll();
不能正常工作。
我不知道问题出在哪里。我在这里做错了吗?。
它表现得很奇怪 你可以看到它here。
答案 0 :(得分:7)
我只是从here取fabric.js
并替换为我的,并且全部工作。
答案 1 :(得分:2)
以下代码适用于我。我看到两点我可能在你身边失败了:
canvas.renderAll();
需要正确地重新渲染。还有:
canvas.setActiveObject(textSample);
对我来说是必要的。因为否则:
canvas.getActiveObject();
未定义。 现在是一个完整的代码示例:
var canvas = new fabric.Canvas('c', { selection: false });
var text = 'Type Text Here';
var textSample = new fabric.Textbox(text, {
left: 300,
top: 50,
width: 200,
height: 20,
fontFamily: 'Helvetica',
fill: "#fac",
fontWeight: '100',
fontSize: parseInt('25'),
originX: 'center',
hasRotatingPoint: true,
centerTransform: true,
});
canvas.add(textSample);
canvas.setActiveObject(textSample);
canvas.getActiveObject().set("fontWeight", "bold");
canvas.renderAll();
canvas.getActiveObject().set("fontWeight", "100");
canvas.renderAll();
希望有所帮助。