Canvas就是一個畫布,能夠進行畫任何的線、圖形、填充等一系列的操做,並且操做的畫圖就是js,因此讓js編程到了嗑藥的地步。另外Canvas不只僅提供簡單的二維矢量繪圖,也提供了三維的繪圖,以及圖片處理等一系列的api支持。javascript
(1) 要使用Canvas來繪製圖形必須在頁面中添加Canvas的標籤。html
例如: <canvas id="demoCanvas" width="500" height="500"> <p>爺,你還在上個世紀吧,如今都html5了,您還在ie6時代?</p> </canvas>
html5
(2) 固然只有上面的標籤,只能是建立好了一個畫布,其中width和height屬性就是設置畫布的大小。Id屬性也是必須的,後面要用Id來拿到當前的Canvas的Dom對象。經過此Canvase的Dom對象就能夠獲取他的上下文了,Canvas繪製圖形都是靠着Canvas對象的上下文對象.java
代碼:<script type="text/javascript">
編程
//第一步:獲取canvas元素
var canvasDom = document.getElementById("demoCanvas");
//第二步:獲取上下文
var context = canvasDom.getContext('2d');
</script>
(3) Context上下文默認兩種繪製方式:第一種:繪製線(stroke),第二種:填充:fill。canvas
注意:決定了使用哪一種方式以後,在填充或者繪製線以前先設置樣式。<body> <canvas id="demoCanvas" width="500" height="500"> <p>爺,你還在上個世紀吧,如今都html5了,您還在ie6時代?</p> </canvas> <!---下面將演示一種繪製矩形的demo---> <script type="text/javascript"> //第一步:獲取canvas元素 var canvasDom = document.getElementById("demoCanvas"); //第二步:獲取上下文 var context = canvasDom.getContext('2d'); //第三步:指定繪製線樣式、顏色 context.strokeStyle = "red"; //第四步:繪製矩形,只有線。內容是空的 context.strokeRect(10, 10, 190, 100); //如下演示填充矩形。 context.fillStyle = "blue"; context.fillRect(110,110,100,100); </script> </body>
<body> <canvas id="demoCanvas" width="500" height="600"> </canvas> <script type="text/javascript"> //經過id得到當前的Canvas對象 var canvasDom = document.getElementById("demoCanvas"); //經過Canvas Dom對象獲取Context的對象 var context = canvasDom.getContext("2d"); context.beginPath(); // 開始路徑繪製 context.moveTo(20, 20); // 設置路徑起點,座標爲(20,20) context.lineTo(200, 200); // 繪製一條到(200,20)的直線 context.lineTo(400, 20); context.closePath(); context.lineWidth = 2.0; // 設置線寬 context.strokeStyle = "#CC0000"; // 設置線的顏色 context.stroke(); // 進行線的着色,這時整條線才變得可見 </script> </body>五 、Canvas繪製文本
<canvas id="demoCanvas" width="500" height="600"></canvas> <script type="text/javascript"> //經過id得到當前的Canvas對象 var canvasDom = document.getElementById("demoCanvas"); //經過Canvas Dom對象獲取Context的對象 var context = canvasDom.getContext("2d"); context.moveTo(200,200); // 設置字體 context.font = "Bold 50px Arial"; // 設置對齊方式 context.textAlign = "left"; // 設置填充顏色 context.fillStyle = "#005600"; // 設置字體內容,以及在畫布上的位置 context.fillText("老馬!", 10, 50); // 繪製空心字 context.strokeText("blog.itjeek.com!", 10, 100); </script>
<canvas id="demoCanvas" width="500" height="600"></canvas> <script type="text/javascript"> //經過id得到當前的Canvas對象 var canvasDom = document.getElementById("demoCanvas"); //經過Canvas Dom對象獲取Context的對象 var context = canvasDom.getContext("2d"); context.beginPath();//開始繪製路徑 //繪製以 (60,60)爲圓心,50爲半徑長度,從0度到360度(PI是180度),最後一個參數表明順時針旋轉。 context.arc(60, 60, 50, 0, Math.PI * 2, true); context.lineWidth = 2.0;//線的寬度 context.strokeStyle = "#000";//線的樣式 context.stroke();//繪製空心的,固然若是使用fill那就是填充了。 </script>
<canvas id="demoCanvas" width="500" height="600"></canvas> <script type="text/javascript"> //經過id得到當前的Canvas對象 var canvasDom = document.getElementById("demoCanvas"); //經過Canvas Dom對象獲取Context的對象 var context = canvasDom.getContext("2d"); var image = new Image();//建立一張圖片 image.src = "Images/a.png";//設置圖片的路徑 image.onload = function() {//當圖片加載完成後 for (var i = 0; i < 10; i++) {//輸出10張照片 //參數:(1)繪製的圖片 (2)座標x,(3)座標y context.drawImage(image, 100 + i * 80, 100 + i * 80); } }; </script>