我正在为我的项目使用svg-edit
,并根据我的需要更改svgedit.compiled.js
,这里遇到了一些问题,想要获取选定的元素transform
在transform 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
这里有什么问题?有什么线索吗?
答案 0 :(得分:0)
我在这里忘记了内存,但是当价值偏低的时候,这是因为边界。我相信这是因为getCTM没有考虑边界宽度,但转换矩阵确实如此,反之亦然。如果存在,请尝试使用getScreenCTM或element.clientX。
请创建一个演示问题的小提示,以获得更多帮助。