D3.js:将缩放/缩放分解为多选框

时间:2014-01-31 19:55:08

标签: javascript d3.js

我有一个图表,允许放大和缩小不同的节点。为了帮助选择多个节点,我集成了一个拖动选择框: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);

0 个答案:

没有答案