在HTML5 Canvas中,可以用以下方法描畫三階和二階的貝塞爾曲線:
代碼如下:
context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
context.quadraticCurveTo(cpx, cpy, x, y)
貝塞爾曲線是在二維平面上由一個“起始點”,一個“結束點”,以及一個或多個“控制點”定義的曲線。普通的三階貝塞爾曲線使用兩個控制點,而二階曲線則只使用一個控制點。
要描畫二階貝塞爾曲線,只需設置結束點的坐標和控制點的坐標即可:
代碼如下:
context.moveTo(0,0);
context.quadraticCurveTo(100,25,0,50);
代碼執行結果如下:
上面例子中的曲線從坐標(0,0)開始,到(0,50)結束,而用於控制曲線描繪的控制點的坐標為(100,25)。
相比二階曲線,由於可以設置兩個控制點,三階貝塞爾曲線的描畫更為靈活。下面的代碼描畫了一條”S”形的曲線:
代碼如下:
context.moveTo(150,0);
context.bezierCurveTo(0,125,300,175,150,300);
譯注1:關於貝塞爾曲線,可以參考Wikipedia上的條目(http://en.wikipedia.org/wiki/Bézier_curve),其中的動畫很好地诠釋了貝塞爾曲線的生成機制。
譯注2:目前HTML5 Canvas最高僅支持三階貝塞爾曲線,四階以上的曲線尚不支持