2013-10-24 82 views
1

如何向用戶提供添加或更改形狀內文本的功能,例如圈。用戶將文字添加到形狀

比方說,我有下面的代碼片段,如何當用戶點擊圓圈,寫的東西添加文字:

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有關,但問題是,我希望用戶在畫布中的每個形狀中添加文本。

回答

1

您可以使用the question you found's code,只是做一點修改。

您首先必須弄清楚用戶在畫布上單擊的位置,並查看該字段中有哪些字段。要做到這一點看看this answerthis 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; 
} 

一旦你知道已被點擊什麼文本字段,您可以編輯該字段。