【问题标题】:Svg polygon roundingSvg 多边形四舍五入
【发布时间】:2016-03-27 18:38:03
【问题描述】:

我正在开发一个使用 svg 移动/旋转/缩放功能的应用程序。我在 Laravel 中对后端进行编程,而前端使用的是 html/css/javascript。我在网上看到折线可能具有某种三次贝塞尔曲线。

现在我的问题是:多边形 svg 元素是否可能具有与 example 中的折线相同的三次贝塞尔曲线?

svg的结构如下:

<svg>
    <g data-type="track">
        <polygon class="track" points="2588,851 2537,1157 1796,916 1117,723 0,382 40,80 816,314 1885,638 1887,634"></polygon>
        <polygon class="track" points="114,19 73,0 17,497 46,485"></polygon>
    </g>
</svg>

是否可以给多边形元素一个三次贝塞尔曲线,以便它可以创建一个流体多边形而不是方形非圆角多边形?

【问题讨论】:

  • 那我该怎么做呢?
  • 我在谷歌上搜索了两个小时。所以我的回应是来这里。
  • 你找到的例子有什么问题?
  • 它使用折线而不是多边形。折线内部有一个 Path 元素。
  • 该示例中没有折线。只有一条路。根据定义,折线或多边形是一系列线。如果你想要曲线,你需要使用路径,它是类固醇上的折线/多边形。

标签: javascript svg polygon polyline bezier


【解决方案1】:

多边形不使用三次贝塞尔曲线,路径使用。链接的示例不使用任何多边形,而是使用包含此类曲线的路径。

折线和多边形的区别只是后者是封闭的,因此您可以简单地创建一条路径并将其封闭(隐式或显式)。

除此之外,我不确定您的实际问题是什么。

【讨论】:

    【解决方案2】:

    我认为这里的一些回复有点令人困惑。

    (是否)多边形 svg 元素可能与折线具有相同的三次贝塞尔曲线

    简短的回答是否定的。 &lt;polygon&gt;(和&lt;polyline&gt;)元素始终呈现为您提供的坐标之间的一系列直线段。无法自动使连接具有半径 - 就像 HTML border-radius。如果这就是你要问的。

    如果线条的笔画宽度较大,可以选择将线条连接的外角圆角。

    .track {
      fill: none;
      stroke: black;
      stroke-width: 20;
    }
    
    .round {
      stroke-linejoin: round;
    }
    <svg width="300" height="300">
        <polygon class="track" points="20,20 290,20 290,130 20,130"></polygon>
        <polygon class="track round" points="20,170 290,170 290,280 20,280"></polygon>
    </svg>

    如果您想在“直线”中包含贝塞尔曲线段,则必须改用 &lt;path&gt; 元素。正如您链接到的示例中所使用的那样。

    【讨论】:

      【解决方案3】:

      我建议将一个重复的图形放在另一个具有较小笔划宽度的图形之上。利润! :)

      <svg viewBox="0 0 200 300" xmlns="http://www.w3.org/2000/svg">
       <polygon points="50, 160 55, 180 70, 180 60, 190 65, 205 50, 195 35, 205 40, 190 30, 180 45, 180" stroke-linejoin="round" stroke-width="50" stroke="red"/>
       <polygon points="50, 160 55, 180 70, 180 60, 190 65, 205 50, 195 35, 205 40, 190 30, 180 45, 180" stroke-linejoin="round" stroke-width="30" stroke="#fff"/>
      </svg>

      【讨论】:

      • 有没有办法给特定角添加半径
      猜你喜欢
      • 2023-01-12
      • 2012-08-04
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多