【发布时间】:2019-12-04 02:05:17
【问题描述】:
我需要在鼠标曾经所在的位置和鼠标现在所在的位置之间画一条线。在我寻找答案的过程中,我找到了https://www.w3schools.com/graphics/svg_line.asp,它解释了在 HTML 中创建单个静态行,但与在 JS 中动态创建它们无关。
这是我目前正在使用的代码。我可以在每次鼠标移动时画圈,但不能在这两个鼠标移动之间画线。
<script src="https://d3js.org/d3.v4.min.js">
</script>
<svg id="svg" style="width:100%; height:800px" />
<script>
const svg = d3.select('#svg');
let drawing = false;
let previous_coords = null;
function draw_point(previous_coords) {
if (!drawing)
return;
const coords = d3.mouse(this);
svg.append('circle')
.attr('cx', coords[0])
.attr('cy', coords[1])
.attr('r', 5)
.style('fill', 'black');
// this block doesn't work
svg.append('line')
.attr('x1', previous_coords[0])
.attr('y1', previous_coords[1])
.attr('x2', coords[0])
.attr('y2', coords[1])
.style('stroke', rgb(255, 0, 0))
.style('stroke-width', 10);
previous_coords = d3.mouse(this);
};
svg.on('mousedown', () => {
drawing = true;
});
svg.on('mouseup', () => {
drawing = false;
});
svg.on('mousemove', draw_point);
</script>
【问题讨论】:
标签: javascript d3.js svg