<path d=”M80 80
A 45 45, 0, 0, 0, 125 125
L 125 80 Z” fill=”green”/>
<path d=”M230 80
A 45 45, 0, 1, 0, 275 125
L 275 80 Z” fill=”red”/>
<path d=”M80 230
A 45 45, 0, 0, 1, 125 275
L 125 230 Z” fill=”purple”/>
<path d=”M230 230
A 45 45, 0, 1, 1, 275 275
L 275 230 Z” fill=”blue”/>
</svg>
这个HTML绘制了下面的几幅图:

从上面可以看出,这几个参数其实是唯一确定一段圆弧需要的参数。这里也看到,SVG中的圆弧比canvas中的复杂一些。
绘制三次贝塞尔曲线指令:C x1 y1, x2 y2, x y
三次贝塞尔曲线有两个控制点,就是(x1,y1)和(x2,y2),最后面(x,y)代表曲线的终点。体会下面的例子:
复制代码
<svg width=”190px” height=”160px”>
<path d=”M10 10 C 20 20, 40 20, 50 10″ stroke=”black” fill=”transparent”/>
<path d=”M70 10 C 70 20, 120 20, 120 10″ stroke=”black” fill=”transparent”/>
<path d=”M130 10 C 120 20, 180 20, 170 10″ stroke=”black” fill=”transparent”/>
<path d=”M10 60 C 20 80, 40 80, 50 60″ stroke=”black” fill=”transparent”/>
<path d=”M70 60 C 70 80, 110 80, 110 60″ stroke=”black” fill=”transparent”/>
<path d=”M130 60 C 120 80, 180 80, 170 60″ stroke=”black” fill=”transparent”/>
<path d=”M10 110 C 20 140, 40 140, 50 110″ stroke=”black” fill=”transparent”/>
<path d=”M70 110 C 70 140, 110 140, 110 110″ stroke=”black” fill=”transparent”/>
<path d=”M130 110 C 120 140, 180 140, 170 110″ stroke=”black” fill=”transparent”/>
</svg>
这个HTML片段绘制了下面的图形:
从上面我们可以看到,控制点控制了曲线的弧度。
特殊版本的三次贝塞尔曲线:S x2 y2, x y
很多时候,为了绘制平滑的曲线,需要多次连续绘制曲线。这个时候,为了平滑过渡,常常第二个曲线的控制点是第一个曲线控制点在曲线另外一边的映射点。这个时候可以使用这个简化版本。这里要注意的是,如果S指令前面没有其他的S指令或C指令,这个时候会认为两个控制点是一样的,退化成二次贝塞尔曲线的样子;如果S指令是用在另外一个S指令或者C指令后面,这个时候后面这个S指令的第一个控制点会默认设置为前面的这个曲线的第二个控制点的一个映射点,体会一下:









