d3.js 用鼠标点击捕捉最近的行
d3.js catch the nearest line with mouse click
我需要绘制一条线,该线从另一条线的最接近我的左键单击的点开始。我使用 d3.js 库来绘图。比如我想画一个大的'T'字母,需要自动匹配那些交叉点。我可以画出各种线条和其他结构,只是想放在一起。
谢谢。
这个例子可以帮助你画 lines.To 连续画线只需点击页面并移动鼠标。如果您想停止绘制线条,只需双击即可。
如果仍然存在问题,请分享您的代码或更新您的问题。
var line;
var vis = d3.select("body").append("svg")
.attr("width", 600)
.attr("height", 400)
.on("click", mousedown)
.on("dblclick", mouseup);
function mousedown() {
var m = d3.mouse(this);
line = vis.append("line")
.attr("x1", m[0])
.attr("y1", m[1])
.attr("x2", m[0])
.attr("y2", m[1]);
vis.on("mousemove", mousemove);
}
function mousemove() {
var m = d3.mouse(this);
line.attr("x2", m[0])
.attr("y2", m[1]);
}
function mouseup() {
vis.on("mousemove", null);
}
Jsfiddle here.
我需要绘制一条线,该线从另一条线的最接近我的左键单击的点开始。我使用 d3.js 库来绘图。比如我想画一个大的'T'字母,需要自动匹配那些交叉点。我可以画出各种线条和其他结构,只是想放在一起。
谢谢。
这个例子可以帮助你画 lines.To 连续画线只需点击页面并移动鼠标。如果您想停止绘制线条,只需双击即可。 如果仍然存在问题,请分享您的代码或更新您的问题。
var line;
var vis = d3.select("body").append("svg")
.attr("width", 600)
.attr("height", 400)
.on("click", mousedown)
.on("dblclick", mouseup);
function mousedown() {
var m = d3.mouse(this);
line = vis.append("line")
.attr("x1", m[0])
.attr("y1", m[1])
.attr("x2", m[0])
.attr("y2", m[1]);
vis.on("mousemove", mousemove);
}
function mousemove() {
var m = d3.mouse(this);
line.attr("x2", m[0])
.attr("y2", m[1]);
}
function mouseup() {
vis.on("mousemove", null);
}
Jsfiddle here.