iT邦幫忙

0

請問怎麼讓物件不能超過圓形canvas的邊界

我現在只能讓物件的移動限制在canvas方形內
請問要怎麼讓物件移動限制在我設定的圓形canvas邊界內?

我把canvas用style="border-radius:999em"弄出一個圓形

js的部分:
const canvas = new fabric.Canvas('canvas', {
width: 650,
height: 650,
})

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

   if(obj.getScaledHeight() > obj.canvas.height || obj.getScaledWidth() > obj.canvas.width){
       return;
   }        
   obj.setCoords();        
   // top-left  corner
   if(obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0){
       obj.top = Math.max(obj.top, obj.top-obj.getBoundingRect().top);
       obj.left = Math.max(obj.left, obj.left-obj.getBoundingRect().left);
   }
   // bot-right corner
   if(obj.getBoundingRect().top+obj.getBoundingRect().height  > obj.canvas.height || obj.getBoundingRect().left+obj.getBoundingRect().width  > obj.canvas.width){
       obj.top = Math.min(obj.top, obj.canvas.height-obj.getBoundingRect().height+obj.top-obj.getBoundingRect().top);
       obj.left = Math.min(obj.left, obj.canvas.width-obj.getBoundingRect().width+obj.left-obj.getBoundingRect().left);
   }});
   
   
   
   

2 個回答

0
fillano
iT邦超人 1 級 ‧ 2020-09-02 23:04:11
最佳解答

以四邊形來說,四個頂點與圓心的距離都不超過圓的半徑,就是你要檢查的條件。

原來如此 感謝你!

0
阿展展展
iT邦好手 1 級 ‧ 2020-09-02 15:58:36

控制你得圓心&半徑
看 圓 的外圍是要切邊 還是要超出一些
圓心會影響圓的位置

好的!

我要發表回答

立即登入回答