2017-01-04 26 views
1

私のファブリックアプリケーションでは、選択したオブジェクトを、たとえば左に揃えたいと思います。オブジェクトは回転(および/またはスケーリング)される可能性があるため、オブジェクトを配置することは、オブジェクトの境界ボックスをあるエッジに合わせることを実際に意味します。ファブリックオブジェクトを回転させる方法を教えてください。

回転していないオブジェクトの場合、それは実装するのが非常に簡単です。以下 参照のサンプルコードは:

// find the minimum 'left' value 
// function 'min' is used to find the minimum value of a 
// given array of objects by comparing the property value 
// which is returned by a given callback function 
const { minValue } = min(objects, object => { 
    const left = object.get('left'); 
    const originX = object.get('originX'); 
    if (originX === 'center') { 
    return left - (object.get('width') * object.get('scaleX'))/2; 
    } 
    return left; 
}); 
objects.forEach(object => { 
    if (object.get('originX') === 'center') { 
    object.set('left', minValue + (
     object.get('width') * object.get('scaleX') 
    )/2); 
    } else { 
    object.set('left', minValue); 
    } 
}); 
canvas.renderAll(); 

しかし、それが回転するオブジェクトのための非常に複雑です。回転したオブジェクトを、水平方向または垂直方向に計算されたオフセット/距離に変換する必要があります。

誰でもこのことについて助言を与えることはできますか?ありがとう。

答えて

2

小規模な調査の後、私は公式のfabricjsウェブサイトでdemoを見つけました。

基本的にあなたが行うことができます:

var bound = obj.getBoundingRect(); 

そして、境界矩形の座標としてbound.topbound.leftbound.widthbound.heightを使用しています。

関連する問題