我有一个图表,允许放大和缩小不同的节点。为了帮助选择多个节点,我集成了一个拖动选择框:http://bl.ocks.org/lgersman/5370827。当用户没有缩小图形时,这非常有效,但一旦完成,一切都会变得歪斜。
我知道我需要考虑比例,但我不确定是否正确考虑它。比例值从1(无缩放)变为.1(一直缩小)。以下是进行比例调整的片段。我试过将它加倍,将它加到盒子的大小和X / Y,但没有找到最佳位置。
var d = {
x : parseInt(s.attr("x"), 10),
y : parseInt(s.attr("y"), 10),
width : parseInt(s.attr("width"), 10),
height : parseInt(s.attr("height"), 10)
},
move = {
x : p[0] - d.x,
y : p[1] - d.y
}
;
if( move.x < 1 || (move.x*2<d.width)) { //dragging to the left
d.x = p[0];
d.width -= move.x;
} else { //dragging to the right
d.width = move.x;
}
if( move.y < 1 || (move.y*2<d.height)) { //dragging up
d.y = p[1];
d.height -= move.y;
} else { //dragging down
d.height = move.y;
}
s.attr(d);