使用HTML5 Canvas繪製貝塞爾曲線
HTML5 Canvas 的 `bezierCurveTo()` 方法可以用來生成貝塞爾曲線。貝塞爾曲線由起始點、兩個控制點和結束點定義。與二次曲線相比,貝塞爾曲線使用兩個控制點而不是一個控制點來定義,這使得我們可以建立更復雜的曲線。可以使用 `lineWidth`、`strokeStyle` 和 `lineCap` 屬性來自定義貝塞爾曲線的樣式。
什麼是貝塞爾曲線?
貝塞爾曲線可能在桌面出版和圖形程式中出現過。貝塞爾曲線提供了更強大的形狀控制。由於曲線的起點遵循其控制路徑,我們可以建立環繞或反向的曲線。當您需要在 Visio 風格的流程圖中連線兩個形狀時,它們非常理想。
貝塞爾曲線可以透過兩種不同的方式繪製
二次貝塞爾曲線
三次貝塞爾曲線
讓我們逐一瞭解使用 HTML5 canvas 繪製貝塞爾曲線。
二次貝塞爾曲線
二次貝塞爾曲線是 2nd 次的貝塞爾曲線,由三個點 (A0、A1 和 A2) 定義。

示例
讓我們來看下面的示例,它使用二次貝塞爾曲線繪製一條曲線。
<!DOCTYPE html> <html> <body> <canvas id="mytutorial" width="300" height="150"></canvas> <script> var c = document.getElementById("mytutorial"); var ctx = c.getContext("2d"); ctx.beginPath(); ctx.moveTo(20, 20); ctx.quadraticCurveTo(25, 105, 205, 25); ctx.stroke(); </script> </body> </html>
輸出
當指令碼執行時,它將生成一個輸出,在網頁上顯示使用二次貝塞爾曲線繪製的曲線。
三次貝塞爾曲線
三次貝塞爾曲線是 3rd 次的貝塞爾曲線,由四個點 (A0、A1、A2 和 A4) 定義。曲線從 A0 開始,在 A3 結束。

示例
在下面的示例中,我們使用三次貝塞爾曲線繪製曲線。
<!DOCTYPE html> <html> <body> <canvas id="mytutorial" width="300" height="150"></canvas> <script> var c = document.getElementById("mytutorial"); var ctx = c.getContext("2d"); ctx.beginPath(); ctx.moveTo(20, 20); ctx.bezierCurveTo(30, 110, 210, 110, 210, 30); ctx.stroke(); </script> </body> </html>
輸出
執行上述指令碼後,它將生成一個輸出,其中包含使用貝塞爾曲線繪製的曲線。
示例
您可以嘗試執行以下程式碼,使用 canvas 繪製貝塞爾曲線。
<!DOCTYPE HTML> <html> <head> <style> #test { width: 100px; height:100px; margin: 0px auto; } </style> <script> function drawShape(){ // get the canvas element using the DOM var canvas = document.getElementById('mycanvas'); // Make sure we don't execute when canvas isn't supported if (canvas.getContext){ // use getContext to use the canvas for drawing var ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(75,40); ctx.bezierCurveTo(75,37,70,25,50,25); ctx.bezierCurveTo(20,25,20,62.5,20,62.5); ctx.bezierCurveTo(20,80,40,102,75,120); ctx.bezierCurveTo(110,102,130,80,130,62.5); ctx.bezierCurveTo(130,62.5,130,25,100,25); ctx.bezierCurveTo(85,25,75,37,75,40); ctx.fill(); } else { alert('You need Safari or Firefox 1.5+ to see this demo.'); } } </script> </head> <body id = "test" onload = "drawShape();"> <canvas id = "mycanvas"></canvas> </body> </html>
輸出
當用戶嘗試執行指令碼時,它將在網頁上顯示使用貝塞爾曲線繪製的心形影像。
廣告