canvas bezierCurveTo() 三次貝塞爾曲線
bezierCurveTo()方法可以繪製三次賽貝爾曲線。
可以結合繪製二次賽貝爾曲線學習,具體參閱canvas quadraticCurveTo()一章節。
二次賽貝爾曲線只能夠在一側彎曲,三次賽貝爾曲線可以在兩側彎曲,後面程式碼圖示演示。
語法結構:
[JavaScript] 純文字檢視 複製程式碼context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);
引數解析:
(1).cp1x和cp1y:必需,第一個控制點座標。
(2).cp2x和cp2y:必需,第二個控制點座標。
(3).x和y:必需,結束點的座標。
圖示如下:
上面是一個簡單三次賽貝爾曲線的示意圖,說明如下:
(1).黑色曲線是真正要繪製的三次塞貝爾曲線,黃色是輔助線。
(2).控制點1與開始點的連線與曲線相切。
(3).控制點2與結束點的連線與曲線相切。
(4).上述塞貝爾曲線並沒有和前文闡述的那樣,可以兩側彎曲,只有一個向下的彎曲。
(5).這是因為控制點都在開始點與結束點連線的一側。
瀏覽器相容:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).Opera瀏覽器支援此方法。
(6).Safari瀏覽器支援此方法。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas { border:2px dotted red; } </style> <script> window.onload = () => { let canvas = document.getElementById("canvas"); let range = document.getElementById("range"); let ctx = canvas.getContext("2d"); ctx.beginPath(); ctx.moveTo(50,50); ctx.bezierCurveTo(20, 100, 200, 20, 200, 50); ctx.stroke(); //輔助線 ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(200, 50); ctx.strokeStyle = "red"; ctx.stroke(); //輔助線 ctx.beginPath(); ctx.strokeStyle = "blue"; ctx.moveTo(50, 50); ctx.lineTo(20, 100); ctx.moveTo(200, 50); ctx.lineTo(200, 20); ctx.stroke(); } </script> </head> <body> <canvas id="canvas"></canvas> </body> </html>
程式碼執行效果截圖如下:
上述程式碼繪製了一個兩側彎曲的三次塞貝爾曲線,簡單分析如下:
(1).開始點與控制點1的連線與曲線相切。
(2).結束點與控制點2的連線與曲線相切。
(3).因為控制點分別在開始點與結束點連線的兩側,所以是兩側彎曲。
相關文章
- canvas實現高階貝塞爾曲線Canvas
- SVG <path> C 指令 三次貝塞爾曲線SVG
- SVG <path>元素C指令三次貝塞爾曲線SVG
- canvas 二次貝塞爾曲線quadraticCurveTo()Canvas
- html5中canvas繪製貝塞爾曲線HTMLCanvas
- 用canvas繪製一個曲線動畫——深入理解貝塞爾曲線Canvas動畫
- canvas基礎[二]教你編寫貝塞爾曲線工具Canvas
- html5中canvas貝塞爾曲線繪製菊花HTMLCanvas
- Android 貝塞爾曲線Android
- 貝塞爾曲線基礎部分
- UIBezierPath貝塞爾曲線UI
- 簡易製作貝塞爾曲線動畫(JS+css3+canvas)動畫JSCSSS3Canvas
- 貝塞爾曲線理解與應用
- iOS UIBezierPath 貝塞爾曲線iOSUI
- Android繪圖最終篇之大戰貝塞爾三次曲線Android繪圖
- 如何理解並應用貝塞爾曲線
- Android 自定義貝塞爾曲線工具Android
- 貝塞爾曲線開發的藝術
- iOS UIBezierPath貝塞爾曲線常用方法iOSUI
- 使用貝塞爾曲線裁圓優化tableView優化View
- Path從懵逼到精通(2)——貝塞爾曲線
- js控制貝塞爾曲線程式碼例項JS線程
- 安卓自定義 View 進階:貝塞爾曲線安卓View
- 貝塞爾曲線(Bezier curve)實現節點連線
- 自定義View合輯(6)-波浪(貝塞爾曲線)View
- SVG <path> Q指令 二次貝塞爾曲線SVG
- webGL入門-四階貝塞爾曲線繪製Web
- iOS開發之畫圖板(貝塞爾曲線)iOS
- 【Flutter高階玩法】 貝塞爾曲線的表象認知Flutter
- Flutter 自定義元件之貝塞爾曲線畫波浪球Flutter元件
- Android-貝塞爾曲線實現水波紋動畫Android動畫
- SVG <path>元素Q指令二次貝塞爾曲線SVG
- bezierMaker.js——N階貝塞爾曲線生成器JS
- 一個貝塞爾曲線編輯工具(2d)
- 貝塞爾曲線原理、推導及Matlab實現Matlab
- 自定義View合輯(8)-跳躍的小球(貝塞爾曲線)View
- 包教包會-貝塞爾曲線的繪製原理與應用
- SVG之Path路徑詳解(二),全面解析貝塞爾曲線SVG