【问题标题】:Live drawing of a line in D3.js [closed]在 D3.js 中实时绘制一条线 [关闭]
【发布时间】:2013-08-18 21:26:56
【问题描述】:

我刚开始使用 D3.js,我想创建类似于我们在 Paint 中绘制线条的东西。步骤应该是一样的: - 点击屏幕上的一个点 - 拖动到目的地创建一条线。

我现在遇到的麻烦是,当您将鼠标拖动到目的地时,该行应该根据您的鼠标移动。我该怎么做?

谢谢。

【问题讨论】:

  • 您能否将您的代码示例放到 jsbin.com 或 jsfiddle 上,以便我们查看它当前在做什么?
  • 如果没有代码,很难确切地看到您要查找的内容,但this code 几乎可以进行拖动(您可能不需要其他功能,但值得一看)

标签: svg d3.js jquery-svg svg-animate


【解决方案1】:

这是一个简单的例子。另见live version

var line;

var vis = d3.select("body").append("svg")
    .attr("width", 600)
    .attr("height", 400)
    .on("mousedown", mousedown)
    .on("mouseup", 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);
}

我认为您要查找的部分在mousemove 事件处理程序中,我们在其中选择当前行并根据当前鼠标位置调整其目标点。请注意,我们只在mousedown 中启用mousemove,以避免多余的处理。

【讨论】:

    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多