2016-06-14 11 views
2

私は後でHow to get the canvas-relative position of an object that is in a group?の座標を取得する方法を知りました。そして、私は、グループが拡大縮小されたときに座標を得るための実験をしました。コントロールを介してグループを回転させた後、キャンバスを基準にファブリックのグループ内のオブジェクトの位置を取得します

x = object.left * object.group.scaleX + object.group.left +(object.group.width/2)* object.group.scaleX;

y = object.top * object.group.scaleY + object.group.top +(object.group.height/2)* object.group.scaleY;

グループを回転させるときにx &を得る方法。私はfabric.util.rotatePointを見つけましたが、実際にどのように使用するのか分かりません。原点X、原点、スケーリング、回転などを参考にして、キャンバスに関連するオブジェクトの座標を返す関数があったらいいと思います。読んでくれてありがとう。

+0

bu xとyはどういう意味ですか?上と左? – AndreaBogazzi

+0

[変換マトリックス](https://github.com/simonsarris/Canvas-tutorials/blob/master/transform.js)を調べてください。平行移動、拡大縮小、回転などの変形を行列に適用し、行列を使用してキャンバス相対点を得ることができます。 – markE

+0

AndreaBogazzi:はい。 –

答えて

0

スケーリングを追跡し、変換行列を使用することで問題を解決しました。

var matrix = object.calcTransformMatrix(); 
x = matrix[4] // translation in X 
y = matrix[5] // translation in Y 

行列の5番目と6番目の値は、定義による翻訳であるが、それはまた、グループ内のオブジェクトのスケーリング、回転を考慮に入れます。オブジェクトの場所を見つける私の意図は、2つのオブジェクトの間に線を引くことでした。私はユーザーがキャンバスのサイズを変更した後にもやりたいと思っていました。

関連する問題