先說一下canvas元素比較游泳的方法主要是canvas通過getContext()方法獲取的上下文對象。
其次設置顏色方面,通常有四種方法:16進制顏色值、英語單詞、rgb、rgba。主要注意的是後兩者,rgb的三個參數是紅綠藍0-255的值,rgba在此基礎上添加了第四個參數透明度,范圍0-1。
1.畫矩形
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8"> <title></title> <script> //畫矩形 function drawRect(id){ var canvas = document.getElementById(id); //獲取上下文對象,canvas很多常用方法都是基於這個對象實現的 var context = canvas.getContext('2d'); //目前參數只有2d context.fillStyle = "gray"; //填充顏色 context.strokeStyle = "#f60"; //邊框顏色 context.lineWidth = 5; //邊框寬度 context.fillRect(0,0,400,300); //參數:x,y,width,height。繪制“已填色”的矩形,默認填充顏色是黑色 context.strokeRect(80,80,180,120); //參數:x,y,width,height。繪制未填色的矩形,默認填充顏色是黑色 context.strokeRect(110,110,180,120); } </script> <head> <body onload="drawRect('canvas');"> <canvas id="canvas" width="400px" height="400px" ></canvas> </body> </html>
JavaScript已經是所有浏覽器的默認腳本語言,因此<script>標簽中無需再指定腳本類型。
2.畫圓
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8"> <title></title> <script> //畫圓形 function drawArc(id){ var canvas = document.getElementById(id); //獲取上下文對象,canvas很多常用方法都是基於這個對象實現的 var context = canvas.getContext('2d'); //目前參數只有2d context.fillStyle = "#f1f2f3"; //填充顏色 context.fillRect(0,0,400,400); //參數:x,y,width,height。繪制“已填色”的矩形,默認填充顏色是黑色 for(var i=1; i<10; i++){ context.beginPath(); //路徑開始 i % 2 ? context.arc(200,200,10*i,0,Math.PI,true): context.arc(200,200,10*i,0,Math.PI,false); //參數:x,y,半徑,開始角度,結束角度,是否按順時針方向 context.closePath(); //路徑關閉 context.fillStyle = "rgba(255,0,0,0.25)"; //填充顏色 context.fill(); //繪制 } } </script> <head> <body onload="drawArc('canvas');"> <canvas id="canvas" width="400px" height="400px" ></canvas> </body> </html>
3.寫字
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8"> <title></title> <script> //寫字 function drawText(id){ var canvas = document.getElementById(id); //獲取上下文對象,canvas很多常用方法都是基於這個對象實現的 var context = canvas.getContext('2d'); //目前參數只有2d context.fillStyle = "gray"; //填充顏色 context.fillRect(0,0,800,300); //參數:x,y,width,height。繪制“已填色”的矩形,默認填充顏色是黑色 context.fillStyle = '#fff'; //填充顏色 context.strokeStyle = '#fff'; //邊框顏色 context.font = "bold 40px '微軟雅黑'"; //設置字體 //context.textBaseline = 'Top'; context.textAlign = 'start'; 文字相對於浏覽器頂部和左側的對齊方式 context.fillText('Canvas',50,50); context.strokeText('Canvas',70,100); } </script> <head> <body onload="drawText('canvas');"> <canvas id="canvas" width="400px" height="400px" ></canvas> </body> </html>
textBaseline和textAlign特點可以查看其他資源,就不在這混亂主題了。
4.將畫保存
window.location = canvas.toDataURL('image/jpeg'); //保存圖像
可以選擇自己想要的格式。
5.動畫
var i=100; function painting(){ //alert(1); context.fillStyle = "gray"; //填充顏色 context.fillRect(i,0,10,10); //參數:x,y,width,height。繪制“已填色”的矩形,默認填充顏色是黑色 i=i+20; } function draw(id){ var canvas = document.getElementById(id); //獲取上下文對象,canvas很多常用方法都是基於這個對象實現的 var context = canvas.getContext('2d'); //目前參數只有2d setInterval(painting,100); //事件單位是毫秒 i=0; }
這個沒有做出效果。看到別人用上面的方法,但是我這樣寫沒有出來動畫,調試果然顯示painting函數內的context為定義。以後有時間再學習一下。