1. 程式人生 > >Canvas入門(1):繪制矩形、圓、直線、曲線等基本圖形

Canvas入門(1):繪制矩形、圓、直線、曲線等基本圖形

dsm etc win cti b2c 創建 例如 .com courier

來源:http://www.ido321.com/968.html

一、Canvas的基礎知識

Canvas是HTML 5中新增的元素,專門用於繪制圖形。canvas元素就相當於一塊“畫布”,一塊無色的透明區域。須要利用JavaScript編寫在當中進行繪畫的腳本。

在頁面放置canvas元素非常easy。利用<canvas>標簽。同一時候指定幾個主要的屬性:id,width和height。接下來通過幾個小案例,跟我入門canvas吧~~~^_^~~~

二、Canvas小案例(測試結果來自Google最新版本號)

1、繪制矩形

canvas.html:

   1: <!DOCTYPE >
   2: <html>
   3: <head>
   4: <meta charset="utf-8">
   5: <title>canvas元素學習</title>
   6: <script type="text/javascript" src="canvas.js">
   7: </script>
   8: </head>
   9: <body>
  10:     <h3>canvas元素學習</h3>
  11:     <canvas id="canvas"
width="400" height="300"></canvas>
  12: </body>
  13: </html>

canvas.js:

   1: window.onload=function()
   2: {
   3:     // 獲取canvas 的ID
   4:     var canvas = document.getElementById(‘canvas‘);
   5:     if (canvas == null)
   6:     {
   7:         return false;
   8:     }
   9:
// 獲取上下文
  10:     var context = canvas.getContext(‘2d‘);
  11:     // 設置填充的樣式
  12:     context.fillStyle = "#eeeeff";

13:// 繪制矩形,以fillStyle填充。fillRect(strokeRect)前兩個參數是矩形左上角位置,後兩個參數各自是寬和高

//默認原點是canvas的左上角

  14:     context.fillRect(0,0,400,300);
  15:     context.fillStyle = ‘red‘;
  16:     // 設置邊框的樣式
  17:     context.strokeStyle = ‘blue‘;
  18:     // 設置邊框大小
  19:     context.lineWidth = 2;
  20:     context.fillRect(50,50,100,100);
  21:     // 繪制矩形邊框
  22:     context.strokeRect(50,50,100,100);
  23: }

效果:

技術分享

2、繪制圓形:使用路徑繪制

   1: // 獲取canvas 的ID
   2:     var canvas = document.getElementById(‘canvas‘);
   3:     if (canvas == null)
   4:     {
   5:         return false;
   6:     }
   7:     // 獲取上下文
   8:     var context = canvas.getContext(‘2d‘);
   9:     // 設置填充的樣式
  10:     context.fillStyle = "#eeeeff";
  11:     // 繪制矩形,以fillStyle填充
  12:     context.fillRect(0,0,400,300);
  13:     for(var i = 0; i<9; i++)
  14:     {
  15:         // 創建路徑
  16:         context.beginPath();
  17:         // 繪制圓形路徑
  18:         context.arc(i*25, i*25, i*10, 0, Math.PI * 2, true);
  19:         // 關閉路徑。假設不關閉,則圖像會重疊
  20:         context.closePath();
  21:         context.fillStyle = ‘rgba(255,0,0,0.25)‘;
  22:         // 以fillStyle填充
  23:         context.fill();
  24:     }

arc()繪制圓弧。其參數例如以下

arc(x,y,radius,startAngle,endAngle,anticlockwise):x,y是圓弧的圓心位置,radius是半徑,startAngle和endAngle是起始和結束的角度,單位是弧度(度數必須轉為弧度),anticlockwise是一個布爾值,true表示順時針繪制圖像。false表示逆時針繪制。起始角度是0。結束角度是360(PI*2)就能夠繪制圓形。

效果:

技術分享

3、繪制直線

繪制直線用到moveTo()和lineTo()兩個方法

   1: // 獲取canvas 的ID
   2:     var canvas = document.getElementById(‘canvas‘);
   3:     if (canvas == null)
   4:     {
   5:         return false;
   6:     }
   7:     // 獲取上下文
   8:     var context = canvas.getContext(‘2d‘);
   9:     // 設置填充的樣式
  10:     context.fillStyle = "#eeeeff";
  11:     // 繪制矩形,以fillStyle填充
  12:     context.fillRect(0,0,400,300);

13: context.beginPath();

//參數線的起點坐標

14: context.moveTo(50,50);

//參數線的終點坐標

  15:     context.lineTo(100,100);

16: context.closePath();

//關閉路徑之後繪制圖形

  17:     context.strokeStyle = ‘red‘;
  18:     context.stroke();

效果:

技術分享

繪制一個復雜點的

   1: // 獲取canvas 的ID
   2:     var canvas = document.getElementById(‘canvas‘);
   3:     if (canvas == null)
   4:     {
   5:         return false;
   6:     }
   7:     // 獲取上下文
   8:     var context = canvas.getContext(‘2d‘);
   9:     // 設置填充的樣式
  10:     context.fillStyle = "#eeeeff";
  11:     // 繪制矩形,以fillStyle填充
  12:     context.fillRect(0,0,400,300);
  13:     var dx = 150;
  14:     var dy = 150;
  15:     var s  = 100;
  16:      // 創建路徑
  17:      context.beginPath();
  18:      context.fillStyle = ‘rgb(100,255,100)‘;
  19:      context.strokeStyle = ‘rgb(0,0100)‘;
  20:      var x = Math.sin(0);
  21:      var y = Math.cos(0);
  22:      var dig = Math.PI/15 *11;
  23:      for (var i = 0; i < 30; i++) {
  24:          var x = Math.sin(i * dig);
  25:          var y = Math.cos(i * dig);
  26:          context.lineTo(dx+x*s,dx+y*s);
  27:      }
  28:      context.closePath();
  29:      context.fill();
  30:      context.stroke();

效果:

技術分享

4、繪制曲線:利用bezierCurveTo繪制貝濟埃曲線

bezierCurveTo能夠繪制曲線,是lineTo的曲線版本號

   1: // 獲取canvas 的ID
   2:     var canvas = document.getElementById(‘canvas‘);
   3:     if (canvas == null)
   4:     {
   5:         return false;
   6:     }
   7:     // 獲取上下文
   8:     var context = canvas.getContext(‘2d‘);
   9:     // 設置填充的樣式
  10:     context.fillStyle = "#eeeeff";
  11:     // 繪制矩形,以fillStyle填充
  12:     context.fillRect(0,0,400,300);
  13:     var dx = 150;
  14:     var dy = 150;
  15:     var s  = 100;
  16:      // 創建路徑
  17:      context.beginPath();
  18:      context.fillStyle = ‘rgb(100,255,100)‘;
  19:      context.strokeStyle = ‘rgb(0,0100)‘;
  20:      var x = Math.sin(0);
  21:      var y = Math.cos(0);
  22:      var dig = Math.PI/15 *11;
  23:      context.moveTo(dx,dy);
  24:      for (var i = 0; i < 30; i++) {
  25:          var x = Math.sin(i * dig);
  26:          var y = Math.cos(i * dig);
  27:          context.bezierCurveTo(dx+x*s,dy+y*s-100,dx+x*s+100,dy+y*s,dx+x*s,dy+y*s);
  28:      }
  29:      context.closePath();
  30:      context.fill();
  31:      context.stroke();

效果

技術分享


下一篇:Canvas入門(2):圖形漸變和圖像形變換

Canvas入門(1):繪制矩形、圓、直線、曲線等基本圖形