我正在使用此代码在canvas
中使用fabric js
添加textbox
,
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。
发布于 2016-01-23 14:36:56
我只是从here拿来了fabric.js
,换成了我的,一切都在工作。
发布于 2016-01-21 15:19:12
下面的代码适用于我。我认为有两点是我在你身边可能会失败的:
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();
希望这能有所帮助。
https://stackoverflow.com/questions/34901979
复制相似问题