[ html canvas 繪制曲線三種方法 ] canvas繪圖 繪制曲線三種方法屬性實例演示


 1 <!DOCTYPE html>
 2 <html lang='zh-cn'>
 3 <head>
 4 <title>Insert you title</title>
 5 <meta name='description' content='this is my page'>
 6 <meta name='keywords' content='keyword1,keyword2,keyword3'>
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 8 <link rel='stylesheet' type='text/css' href='./css/index.css' />
 9 <script type='text/javascript' src='./js/jquery-1.12.1.min.js'></script>
10 <style type='text/css'>
11 html,body,canvas { 12     margin: 0; padding: 0; 13 } 14 
15 html { 16     background: #999; 17 } 18 
19 #can { 20     background: #FFF; display: block; margin: 75px auto; border-radius: 2px; 21 } 22 </style>
23 <script type='text/javascript'>
24     $( function(){ 25         var oCan = $( '#can' ).get( 0 ).getContext( '2d' ); 26  oCan.beginPath(); 27         /* 
28             
29  繪制曲線(圓形曲線): 30  oCan.arcTo(x1,y1,x2,y2,r) W3C解釋 : 在畫布上創建介於兩個切線之間的弧: 起點坐標 1, 終點坐標 2, 半徑(調整半徑可達到不同效果) 31  這里有幾個問題需要解決: 32  一: 33  為什么在不設置 oCan.moveTo(),只設置oCan.arcTo()的時候,是畫不出來曲線的? 34  二: 35  為什么我們在設置的坐標點的時候,看不懂他是怎么畫出來這個圓呢? 36             
37  繪制曲線二(弧形曲線): 38  oCan.quadraticCurveTo(); W3C 二次方曲線 (繪制一條二次貝塞爾曲線:) 39  定義和用法 40  quadraticCurveTo(dx,dy,x1,y1) 方法通過使用表示二次貝塞爾曲線的指定控制點,向當前路徑添加一個點。 dx,dy :控制點 x1,y1 結束坐標 41  提示:二次貝塞爾曲線需要兩個點。第一個點是用於二次貝塞爾計算中的控制點,第二個點是曲線的結束點。曲線的開始點是當前路徑中最后一個點。如果路徑不存在, 42  那么請使用 beginPath() 和 moveTo() 方法來定義開始點。 43             
44  繪制曲線三(S型曲線): 45  定義和用法 46  bezierCurveTo(dx1,dy1,dx2,dy2,x1,y1) 方法通過使用表示三次貝塞爾曲線的指定控制點,向當前路徑添加一個點。 dx,dy :控制點 x1,y1 結束坐標 47  提示:三次貝塞爾曲線需要三個點。前兩個點是用於三次貝塞爾計算中的控制點,第三個點是曲線的結束點。曲線的開始點是當前路徑中最后一個點。如果路徑不存在, 48  那么請使用 beginPath() 和 moveTo() 方法來定義開始點。 49                 
51          */
52         /* 
53         
54  // 使用arcTo來創建曲線 55  oCan.moveTo( 250 , 250 ); //創建開始點 56  oCan.arcTo( 100 , 300 , 50 , 150 , 50 ); 57  oCan.arc( 250 , 250 , 2 , 0 , 2 * Math.PI , true ); // 輔助 58  oCan.arc( 100 , 300 , 2 , 0 , 2 * Math.PI , true ); // 輔助 59  oCan.arc( 50 , 150 , 2 , 0 , 2 * Math.PI , true ); // 輔助 60  oCan.closePath(); 61  oCan.stroke(); 62         
63          */
64 
65         /*     
66         
67  // 使用quadraticCurveTo來創建曲線 68  oCan.moveTo( 250 , 250 ); /* 創建開始點 69  oCan.quadraticCurveTo( 100 , 300 , 50 , 150 ); // 畫出的曲線大小和控制點有直接關系,可以調整控制點的坐標來進行查看(曲線就是兩個切線之間的弧) 70  oCan.arc( 250 , 250 , 2 , 0 , 2 * Math.PI , true ); // 輔助 71  oCan.arc( 100 , 300 , 2 , 0 , 2 * Math.PI , true ); // 輔助 72  oCan.arc( 50 , 150 , 2 , 0 , 2 * Math.PI , true ); // 輔助 73  oCan.closePath(); 74  oCan.stroke(); 75         
76          */
77 
78         // 使用bezierCurveTo來創建曲線
79         oCan.moveTo( 250 , 250 ); // 創建開始點 
80         oCan.bezierCurveTo( 150 , 300 , 450 , 350 , 50 , 500 ); 81         oCan.arc( 250 , 250 , 2 , 0 , 2 * Math.PI , true ); // 輔助 
82         oCan.arc( 150 , 300 , 2 , 0 , 2 * Math.PI , true ); // 輔助 
83         oCan.arc( 450 , 350 , 2 , 0 , 2 * Math.PI , true ); // 輔助 
84         oCan.arc( 50 , 500 , 2 , 0 , 2 * Math.PI , true ); // 輔助 
85  oCan.stroke(); 86  oCan.closePath(); 87  } ); 88 </script>
89 </head>
90 <body>
91     <canvas id='can' width='500' height='500'>您的瀏覽器版本過低,請升級您的瀏覽器...</canvas>
92 </body>
93 </html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM