anvas標籤:
<canvas>
不支持 canvas 的瀏覽器可以看到的內容
<canvas> 繪製環境:
getContext('2d'):目前支持2d的場景
(1)繪製方塊
fillRect(L, T, W, H):默認顏色是黑色
strokeRect(L, T, W, H):帶邊框的方塊,默認1像素黑色邊框,顯示出來的不一樣
(2)設置繪圖
fillStyle:填充顏色(繪製canvas是有順序的)
lineWidth:線寬度,是一個數值
strokeStyle:邊線顏色
(3)邊界繪製
lineJoin:邊界連接點樣式—miter(默認)、round(圓角)、bevel(斜角)
lineCap:端點樣式—butt(默認)、round(圓角)、square(高度多出爲寬一半的角)
<!DOCTYPE> <html> <head> <meta charset="utf-8" /> <title>無標題文檔</title> <style> body{ background:black;} #c1{ background:white;} span{ color:white;} </style> <script> window.onload = function(){ var oC = document.getElementById('c1'); var oGC = oC.getContext('2d'); oGC.fillStyle = 'red'; oGC.strokeStyle = 'blue'; oGC.lineWidth = 10; oGC.lineJoin = 'bevel'; oGC.fillRect(50,50,100,100); oGC.strokeRect(50.5,50.5,100,100); }; </script> </head> <body> <canvas id="c1" width="400" height="400"> <span>不支持canvas瀏覽器</span> </canvas> <!--默認:寬300 高150--> </body> </html> |
(4)繪製路徑
beginPath:開始繪製路徑
closePath:結束繪製路徑
moveTo:移動到繪製的新目標點
lineTo:新的目標點
stroke:畫線,默認黑色
fill:填充,默認黑色
rect:矩形區域
clearRect:刪除一個畫布的矩形區域
save:保存路徑
restore:恢復路徑
window.onload = function(){ var oGC = oC.getContext('2d'); // 畫線,默認黑色 |
案例:
——鼠標畫線
window.onload = function(){ oC.onmousedown = function(ev){ |
——方塊移動
window.onload = function(){ setInterval(function() { |
(5)繪製圓
arc(x, y, 半徑, 起始弧度, 結束弧度, 旋轉方向)
—x,y:起始位置
—弧度與角度的關係:弧度 = 角度 * Math.PI/180
—旋轉方向:順時針(默認:false)、逆時針(true)
window.onload = function(){ var oC = document.getElementById('c1'); var oGC = oC.getContext('2d'); oGC.moveTo(200, 200); //弧度 = 角度*Math.PI/180 oGC.arc(200, 200, 150, 0, 90*Math.PI/180, true); // 閉合 oGC.closePath(); // 畫線 oGC.stroke(); }; |
案例
——用arc去畫鐘錶
window.onload = function(){ function toDraw(){ oGC.clearRect(0, 0, oC.width, oC.height); var oDate = new Date(); // oGC.moveTo(x, y); // 畫刻度(小分割線,60格) // 畫圓盤 // 畫刻度(大分割線,12格) // 畫圓盤 // 或秒針、分針、時針 // 秒針 |
(6)繪製其他曲線
arcTo(x1, y1, x2, y2, r):第一組座標,第二組座標,半徑
window.onload = function(){ var oC = document.getElementById('c1'); var oGC = oC.getContext('2d'); oGC.moveTo(100,200); oGC.arcTo(100,100,200,100,50); oGC.stroke(); } |
quadraticCurveTo(dx, dy, x1, y1):貝塞爾曲線——第一組控制點,第二組結束座標
window.onload = function(){ var oC = document.getElementById('c1'); var oGC = oC.getContext('2d'); oGC.moveTo(100,200); quadraticCurveTo(100,100,200,100); oGC.stroke(); } |
bezierCurveTo(dx1, dy1, dx2, dy2, x1, y1):貝塞爾曲線——第一組控制點,第二組控制點,第三組結束座標
window.onload = function(){ } |