Raphael Free Transform プラグインを使用して、スケーリング、ドラッグ、回転を有効にしています。この特定のシナリオでは、1 つのハンドルをサイズ変更用に、別のハンドルを回転用に使用したいので、スケール オプションは軸 x にのみ設定されます。「画像」の歪みを避けるために、関数コールバックでそれを修正することにより、y 軸のスケーリングを補正したいと考えています。ユーザーが 1 つのハンドルを使用してラファエル セットのサイズを変更し、別のハンドルを使用してラファエル セットを回転できるようにしたいと考えています。また、ユーザーがオブジェクトをドラッグしようとすると失われないように、スケーリングによって引き起こされたすべての変換を保持したいと思います。
var ft = paper.freeTransform(tmp, { scale: ['axisX'], rotate: ['axisY'] }, cbFreeTransform);
function cbFreeTransform(s, e) {
if (e.toString() == 'scale end') {
for (var i = 0, l = tmp.length; i < l; i++) {
var itm = tmp[i];
itm.scale(1, s.attrs.scale.x);
}
}
}
ここにフィドルがあります:jsFiddle
どんな助けでも大歓迎です。