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 二次貝塞爾曲線quadraticCurveTo()Canvas
- 貝塞爾曲線
- canvas基礎[二]教你編寫貝塞爾曲線工具Canvas
- 貝塞爾曲線基礎部分
- Android繪圖最終篇之大戰貝塞爾三次曲線Android繪圖
- 貝塞爾曲線理解與應用
- 如何理解並應用貝塞爾曲線
- 貝塞爾曲線(Bezier curve)實現節點連線
- 自定義View合輯(6)-波浪(貝塞爾曲線)View
- webGL入門-四階貝塞爾曲線繪製Web
- 貝塞爾曲線原理、推導及Matlab實現Matlab
- VBA,Shapes.AddCurve SafeArrayOfPoints:=pts 畫貝塞爾曲線
- 【Flutter高階玩法】 貝塞爾曲線的表象認知Flutter
- Flutter 自定義元件之貝塞爾曲線畫波浪球Flutter元件
- 一個貝塞爾曲線編輯工具(2d)
- Android-貝塞爾曲線實現水波紋動畫Android動畫
- Android日常學習:OpenGL 實踐之貝塞爾曲線繪製Android
- 自定義View合輯(8)-跳躍的小球(貝塞爾曲線)View
- SVG之Path路徑詳解(二),全面解析貝塞爾曲線SVG
- 使用二階貝塞爾曲線實現新增購物車動畫動畫
- 白話經典貝塞爾曲線及其在 Android 中的應用Android
- 【乾貨滿滿】貝塞爾曲線(Bézier curve)——什麼神仙操作
- Flutter 實戰 - 用貝塞爾曲線畫一個帶文字的波浪球 WidgetFlutter
- Flutter BottomAppBar 自定義路徑 + 貝塞爾曲線實現閒魚底部導航FlutterAPP
- 用貝塞爾曲線自己寫的一個電量顯示的控制元件控制元件
- 貝塞爾曲線的css實現——淘寶加入購物車基礎動畫CSS動畫
- Android教你一步一步從學習貝塞爾曲線到實現波浪進度條Android
- Android 窗簾(Curtain)效果四之賽貝爾曲線優化AndroidAI優化
- CSS transition animation的使用(內含貝賽爾曲線詳解)CSS
- 你知道嗎, CoreGraphics繪圖系統和Bezier貝塞爾曲線座標系的順時針方向是相反的!繪圖
- 【flutter高階玩法】貝塞爾實戰1 - 波浪Flutter
- canvas繪製sin正弦曲線Canvas
- canvas小畫板--(1)平滑曲線Canvas
- canvas進階——如何畫出平滑的曲線?Canvas
- 【canvas】一組點怎麼平滑地用曲線連線呢?Canvas
- iOS動畫專題·UIView二維形變動畫與CAAnimation核心動畫(transform動畫,基礎,關鍵幀,組動畫,路徑動畫,貝塞爾曲線)iOS動畫UIViewORM
- 塞爾達風之杖渲染解析
- 拉姆塞理論:舒爾數(二)