在矩形的每个边缘显示线条

时间:2018-02-28 05:17:02

标签: html svg

我想创建一个图形,其中中心将有一个矩形节点,并从每个角落边缘绘制一条十字线。这意味着矩形的4个角边缘有4条线。

我只能在矩形的左上角显示一些线条。有人可以指导我如何显示那个矩形中的其他三条线吗?我不理解文档中的行概念

这是演示



<svg width="800" height="600" viewbox="0 0 800 600" xmlns="http://www.w3.org/2000/svg">
    <g transform="matrix(1 0 0 1 250 100)">
      <rect width="200" height="60" rx="5" ry="5">
      </rect>
      <text x="100" y="30" font-size="14" text-anchor="middle" fill="white">
        Root Node
      </text>
      <line x1="0" y1="0" x2="0" y2="90" stroke="black" stroke-width="3" transform="rotate(-220)"/>
      <line x1="0" y1="0" x2="10" y2="90" stroke="black" stroke-width="3" transform="rotate(-220)"/>
      <line x1="0" y1="0" x2="10" y2="90" stroke="black" stroke-width="3" transform="rotate(-220)"/>
      <line x1="0" y1="0" x2="10" y2="90" stroke="black" stroke-width="3" transform="rotate(-220)"/>
    </g>
  </svg>
&#13;
&#13;
&#13;

this

2 个答案:

答案 0 :(得分:1)

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <svg width="800" height="600" viewbox="0 0 800 600" xmlns="http://www.w3.org/2000/svg">
    <g transform="matrix(1 0 0 1 250 100)">
      <rect width="200" height="60" rx="5" ry="5"></rect>
      <text x="100" y="30" font-size="14" text-anchor="middle" fill="white">
        Root Node
      </text>
      <line x1="0" y1="0" x2="-75" y2="-75" stroke="black" stroke-width="3"/>
      <line x1="200" y1="60" x2="275" y2="135" stroke="black" stroke-width="3"/>
      <line x1="200" y1="0" x2="275" y2="-75" stroke="black" stroke-width="3"/>
      <line x1="0" y1="60" x2="-75" y2="135" stroke="black" stroke-width="3"/>
    </g>
  </svg>
</body>
</html>

答案 1 :(得分:1)

要在不计算坐标的情况下绘制每个角的十字线,您可以使用rotatetranslate属性:

&#13;
&#13;
<svg width="800" height="600" viewbox="0 0 800 600" xmlns="http://www.w3.org/2000/svg">
    <g transform="matrix(1 0 0 1 250 100)">
      
      <rect width="200" height="60" rx="5" ry="5">
      </rect>
      
      <text x="100" y="30" font-size="14" text-anchor="middle" fill="white">
        Root Node
      </text>
                
      <line x1="0" y1="0" x2="100" y2="0" transform="rotate(-135)" stroke="black" stroke-width="3"/>
      <line x1="0" y1="0" x2="100" y2="0" transform="translate(200 0) rotate(-45)" stroke="black" stroke-width="3"/>
      <line x1="0" y1="0" x2="100" y2="0" transform="translate(0 60) rotate(135)" stroke="black" stroke-width="3"/>
      <line x1="0" y1="0" x2="100" y2="0" transform="translate(200 60) rotate(45)" stroke="black" stroke-width="3"/>

    </g>
  </svg>
&#13;
&#13;
&#13;

说明:

X轴从左到右,Y轴从上到下。旋转方向是顺时针方向。所以,代码

<line x1="0" y1="0" x2="100" y2="0" transform="translate(200 0) rotate(-45)" stroke="black" stroke-width="3"/>

从(0,0)到(100,0)绘制一条直线,在X方向上向右移动(移位)200个单位(因为它是主矩形的宽度),然后将其旋转-45度得到它的斜率。

请参阅here了解他们的文档。