2013-12-17 193 views
1

我是Fabric.js的新手。Fabric.js畫布邊界檢測

我想在畫布內顯示一個可移動/可調整大小的矩形,但限制用戶操作,使其無法在畫布外移動/放大。

有沒有簡單的方法來設置這些約束?我是否需要手動檢測畫布邊界?

+1

是,可以使用「對象:移動」,「對象:縮放」等事件並相應地限制對象位置/尺寸。 – kangax

+0

好的,所以我必須得到邊界框(我在網站上看到了一個BB示例),並對其進行了一些檢查。如果這個約束可以作爲一個可編輯的屬性應用於對象,這將是很好的... – dams

+0

這是我的jsfiddle:http://jsfiddle.net/dams/4T4JT/2/如何驗證/無效內部onChange功能? – dams

回答

2

對象縮放或拖動後,它會找到位置。如果位置超出邊界,則會將對象恢復到之前的狀態。

canvas.on('object:modified', function (e) { 
    var obj = e.target; 
    var rect = obj.getBoundingRect(); 

    if (rect.left < 0 
     || rect.top < 0 
     || rect.left + rect.width > canvas.getWidth() 
     || rect.top + rect.height > canvas.getHeight()) { 
     if (obj.getAngle() != obj.originalState.angle) { 
      obj.setAngle(obj.originalState.angle); 
     } 
     else { 
      obj.setTop(obj.originalState.top); 
      obj.setLeft(obj.originalState.left); 
      obj.setScaleX(obj.originalState.scaleX); 
      obj.setScaleY(obj.originalState.scaleY); 
     } 
     obj.setCoords(); 
    } 
    }); 

更多例如:http://sett.ociweb.com/sett/settJun2014.html