Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 使用Raphael free变换插件进行校正缩放_Svg_Raphael - Fatal编程技术网

Svg 使用Raphael free变换插件进行校正缩放

Svg 使用Raphael free变换插件进行校正缩放,svg,raphael,Svg,Raphael,我使用Raphael Free Transform插件来实现缩放、拖动和旋转。 在这个特定的场景中,我想用一个手柄调整大小,另一个手柄旋转,因此缩放选项只在x轴上设置。我想通过在函数回调中纠正y轴上的缩放来补偿它,以避免“图像”失真。 我想让用户重新大小拉斐尔设置使用一个手柄和旋转拉斐尔设置使用另一个。此外,我还希望保留由缩放引起的所有转换,以便在用户尝试拖动对象时不会丢失 var ft = paper.freeTransform(tmp, { scale: ['axisX'], rot

我使用Raphael Free Transform插件来实现缩放、拖动和旋转。 在这个特定的场景中,我想用一个手柄调整大小,另一个手柄旋转,因此缩放选项只在x轴上设置。我想通过在函数回调中纠正y轴上的缩放来补偿它,以避免“图像”失真。 我想让用户重新大小拉斐尔设置使用一个手柄和旋转拉斐尔设置使用另一个。此外,我还希望保留由缩放引起的所有转换,以便在用户尝试拖动对象时不会丢失

    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);
            }

        }
    }
var ft=paper.freeTransform(tmp,{scale:['axix'],rotate:['axisY']},cbFreeTransform);
函数cbFreeTransform(s,e){
如果(例如toString()=='缩放结束'){
对于(变量i=0,l=tmp.length;i
这是小提琴:


感谢您的帮助。

通过执行以下操作找到了解决方案: 在“缩放结束”事件中,我已将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();
    }
}