-1

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

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

这里做错了什么?有什么线索吗?

4

1 回答 1

0

我在这里失去了记忆,但是当值偏离很小的时候,那是因为边界。我相信这是因为 getCTM 没有考虑边框宽度,但变换矩阵会考虑,反之亦然。如果存在,请尝试 getScreenCTM 或 element.clientX。

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

于 2014-11-14T21:21:34.467 回答