【问题标题】:How to use an arrow marker on an SVG <line> element?如何在 SVG <line> 元素上使用箭头标记?
【发布时间】:2012-10-01 19:59:10
【问题描述】:

我需要在 d3.js 中创建一个箭头,但我发现的只是带有节点图的示例。我需要的是简单地制作一个从 A 点到 B 点的箭头。

我尝试在以下示例中实现部分代码:http://bl.ocks.org/1153292

这个特定的部分:

svg.append("svg:defs").selectAll("marker")
    .data(["suit", "licensing", "resolved"])
  .enter().append("svg:marker")
    .attr("id", String)
    .attr("viewBox", "0 -5 10 10")
    .attr("refX", 15)
    .attr("refY", -1.5)
    .attr("markerWidth", 6)
    .attr("markerHeight", 6)
    .attr("orient", "auto")
  .append("svg:path")
    .attr("d", "M0,-5L10,0L0,5");

但正如我之前提到的,我没有找到使用svg:line 创建箭头的方法 非常感谢您能给我的帮助。

【问题讨论】:

标签: javascript d3.js svg graphics


【解决方案1】:

如果您的意思是“如何在 元素上使用箭头标记?”那么你就是这样做的:

<line x1="100" y1="230" x2="300" y2="230" 
 marker-end="url(#yourMarkerId)" stroke="black" stroke-width="10"/>

这是完整的example。请注意,marker-end 是一个 css 属性,因此您也可以根据需要将该部分放入样式表中。

如果您想用线条绘制标记,那么只需添加您需要的任何线条作为标记元素的子元素(并确保使用标记的 viewBox 属性定义的坐标系)。

【讨论】:

  • marker-start 和 marker-end 工作正常但中间行不工作...请检查一下jsfiddle.net/dqoL07cn
  • @dom 这确实应该是一个新问题,因为这将帮助其他人更轻松地找到答案。无论如何,中间标记实际上需要有一个中间段,例如一条三点的折线。开始标记是起点,结束标记是终点,中间标记将用在终点和起点之间的所有点上。有关折线解决方案,请参阅jsfiddle.net/dqoL07cn/2
猜你喜欢
  • 2020-08-27
  • 2023-03-27
  • 1970-01-01
  • 2016-01-27
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2013-08-18
相关资源
最近更新 更多