如何向用户提供在形状内添加或更改文本的功能,例如圈。
假设我有以下代码段,当用户点击圈子并写入内容时如何添加文字:
var canvas = new fabric.Canvas('c1');
var circle = new fabric.Circle({radius: 30, fill: '#f55', top: 100, left: 100});
canvas.selectionColor = 'rgba(0,255,0,0.3)';
canvas.selectionBorderColor = 'red';
canvas.selectionLineWidth = 5;
canvas.add(circle);
我找到了question,但问题是我希望用户在画布的每个形状中添加文字。
答案 0 :(得分:1)
您可以使用the question you found's code并进行一些修改。
首先,您必须弄清楚用户在画布上点击的位置,并查看其中的字段文本。为此,请查看this answer和this jsfiddle。
function collides(rects, x, y) {
var isCollision = false;
for (var i = 0, len = rects.length; i < len; i++) {
var left = rects[i].x, right = rects[i].x+rects[i].w;
var top = rects[i].y, bottom = rects[i].y+rects[i].h;
if (right >= x
&& left <= x
&& bottom >= y
&& top <= y) {
isCollision = rects[i];
}
}
return isCollision;
}
一旦您知道单击了哪个文本字段,就可以编辑该字段。