svg getCTM()没有得到确切的值

时间:2014-10-19 10:12:28

标签: javascript svg svg-edit

我正在为我的项目使用svg-edit,并根据我的需要更改svgedit.compiled.js,这里遇到了一些问题,想要获取选定的元素transformtransform matrix中,我可以获得svg中所选元素的transform

如果元素符合要求,我的代码可以获取当前transform

var my_selected= selectedElements[0].id;
//alert(my_selected);
var child_sel=$('#'+my_selected).children("g").attr('id');

var child_each=$('#'+my_selected);
    //console.log(child_each);
    child_each.each(function () {
        var child_trans = $(this).attr('transform');
        /* dx_x = x - start_x;
        dy_x = y - start_y; */
        $(this).children('g').each(function() {
        if(this.id!='drag_drop') {
        var test_x = $(this).attr('transform');
        console.log(test_x);
        var ss=this.getCTM();
        console.log(ss);
        }
        });
    });

console.log(test_x);上的值为matrix(0, 0.722035, -0.51, 0, 1561, 776.524) 在下一行我使用transform得到相同的元素this.getCTM(),但它没有得到以前的值而不是它低于值

rotation :  90
scaleX :    0.7220349907875061
scaleY :    0.5099999904632568
skewX :     90
skewY : 90
translateX :    4060
translateY :    2376.5234375

这里有什么问题?有什么线索吗?

1 个答案:

答案 0 :(得分:0)

我在这里忘记了内存,但是当价值偏低的时候,这是因为边界。我相信这是因为getCTM没有考虑边界宽度,但转换矩阵确实如此,反之亦然。如果存在,请尝试使用getScreenCTM或element.clientX。

请创建一个演示问题的小提示,以获得更多帮助。