在SVG中绘制圆周长的部分

时间:2015-04-25 10:31:16

标签: svg path geometry

我需要以不同的颜色绘制圆周的SVG部分(请看下图)。不幸的是我不擅长SVG,所以我发现解决方案在我看来非常差:我使用this post中的describeArc()函数并绘制了两条路径 - 一个彩色圆圈并且,在它上面,半径较小的白色圆圈。例如:

PATH1 = describeArc(x=10000, y=5000, radius=3000, startAngle=45, endAngle=90)
PATH2 = describeArc(x=10000, y=5000, radius=2800, startAngle=45, endAngle=90)

将其插入svg后,我有:

 <path d=PATH1 fill="red" stroke-width="0" />
 <path d=PATH2 fill="white" stroke="white" stroke-width="100" />

它有效,但对我来说这是一个丑陋的解决方案。我怎样才能做得更好?

Parts of circumference

1 个答案:

答案 0 :(得分:4)

该函数名为describeArc(),但实际上是绘制一个圆形扇区,而不是弧形。

我同意这有点难看,因为你不必要地画画 - 并且透支 - 大部分领域。而且你会遇到白色边缘周围出现的一些颜色问题。我认为这就是为什么你要包括白色中风。

解决方案非常简单。更改describeArc()功能,使其仅绘制弧,而不是扇区的其余部分。更改代码如下:

var d = [
    "M", start.x, start.y, 
    "A", radius, radius, 0, arcSweep, 0, end.x, end.y
].join(" ");

IE中。删除构成扇区另外两侧的两个“L”路径命令。换句话说,使用@opsb的答案,而不是@Ahtenus答案。