1

我正在使用 Raphael Free Transform 插件来启用缩放、拖动和旋转。在这种特殊情况下,我想用一个手柄来调整大小,另一个用于旋转,因此缩放选项仅在轴 x 上设置。我想通过在函数回调中纠正它来补偿 y 轴上的缩放以避免“图像”失真。我想让用户使用一个手柄重新调整 raphael 集的大小,并使用另一个手柄旋转 raphael 集。另外,我想保留由缩放引起的所有转换,这样一旦用户尝试拖动对象就不会丢失。

    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

任何帮助表示赞赏。

4

1 回答 1

2

在执行以下操作时找到了解决方案:在“缩放结束”事件中,我已将 x 比例因子分配给 y 比例因子并调用自由变换应用方法。这似乎行得通。

var ft = paper.freeTransform(tmp, { scale: ['axisX'], rotate: ['axisY'] }, cbFreeTransform);

function cbFreeTransform(s, e) {
    if (e.toString() == 'scale end') {    
       ft.attrs.scale.y = s.attrs.scale.x;
       ft.apply();
    }
}
于 2013-04-30T13:53:59.310 回答