標籤:
html5也許最有吸引力的新功能是canvas 漆。基本可以足夠強大後,以取代flash頁面的效果。下面來介紹canvas要使用:
HTML5 Canvas的基本圖形都是以路徑為基礎的。通常使用Context對象的moveTo()、lineTo()、rect()、arc()等方法先在畫布中描出圖形的路徑點,然後使用fill()或者stroke()方法按照路徑點來填充圖形或者繪製線條。
通常。在開始描繪路徑之前須要調用Context對象的beginPath()方法,其作用是清除之前的路徑並提醒Context開始繪製一條新的路徑,否則當調用stroke()方法的時候會繪製之前全部的路徑,影響繪製效果。同一時候也由於反覆多次操作而影響網頁效能。
另外,調用Context對象的closePath()方法能夠顯式地關閉當前路徑,只是不會清除路徑。
下面是一些描繪路徑的方法的原型:
void moveTo(x, y);
用於顯式地指定路徑的起點。預設狀態下,第一條路徑的起點是畫布的(0, 0)點。之後的起點是上一條路徑的終點。兩個參數分為表示起點的x、y座標值。
void lineTo(x, y);
用於描繪一條從起點從指定位置的直線路徑,描繪完畢後繪製的起點會移動到該指定位置。參數表示指定位置的x、y座標值。
void rect(left, top,width, height);
用於描繪一個已知左上方頂點位置以及寬和高的矩形,描繪完畢後Context的繪製起點會移動到該矩形的左上方頂點。參數表示矩形左上方頂點的x、y座標以及矩形的寬和高。
void arcTo(x1, y1, x2, y2,radius);
用於描繪一個與兩條線段相切的圓弧,兩條線段分別以當前Context繪製起點和(x2, y2)點為起點。都以(x1, y1)點為終點。圓弧的半徑為radius。
描繪完畢後繪製起點會移動到以(x2, y2)為起點的線段與圓弧的切點。
void arc(x, y, radius,startAngle, endAngle, anticlockwise);
用於描繪一個以(x, y)點為圓心。radius為半徑。startAngle為起始弧度,endAngle為終止弧度的圓弧。anticlockwise為布爾型的參數。true表示逆時針。false表示順時針。參數中的兩個弧度以0表示0°。位置在3點鐘方向。Math.PI值表示180°,位置在9點鐘方向。
void quadraticCurveTo(cpx,cpy, x, y);
用於描繪以當前Context繪製起點為起點,(cpx,cpy)點為控制點,(x, y)點為終點的二次樣條曲線路徑。
void bezierCurveTo(cpx1,cpy1, cpx2, cpy2, x, y);
用於描繪以當前Context繪製起點為起點。(cpx1,cpy1)點和(cpx2, cpy2)點為兩個控制點。(x, y)點為終點的貝茲路徑路徑。
路徑描繪完畢後。須要調用Context對象的fill()和stroke()方法來填充路徑和繪製路徑線條,或者調用clip()方法來剪輯Canvas地區。以上三個方法的原型例如以下:
void stroke();
用於依照已有的路徑繪製線條。
void fill();
用於使用當前的填充風格來填充路徑的地區。
void clip();
用於依照已有的路線在畫布中設定剪輯地區。
調用clip()方法之後,圖形繪製代碼僅僅對剪輯地區有效而不再影響地區外的畫布。如調用之前沒有描繪路徑(即預設狀態下)。則得到的剪輯地區為整個Canvas地區。
此外,Context對象還提供了對應的屬性來調整線條及填充風格,例如以下所看到的:
strokeStyle
線條的顏色,默覺得”#000000”,其值能夠設定為CSS顏色值、漸層對象或者模式對象。
fillStyle
填充的顏色,默覺得”#000000”。與strokeStyle一樣,值也能夠設定為CSS顏色值、漸層對象或者模式對象。
lineWidth
線條的寬度,單位是像素(px),默覺得1.0。
lineCap
線條的端點樣式,有butt(無)、round(圓頭)、square(方頭)三種類型可供選擇,默覺得butt。
lineJoin
線條的轉折處樣式,有round(圓角)、bevel(平角)、miter(尖角)三種。類型可供選擇,默覺得miter。
miterLimit
線條尖角折角的銳利程式,默覺得10。
彈球執行個體:在畫布上畫一個球,點開始球在畫布中不停的上下移動,點結束停止運動。
<!-- 畫來回移動的球 --><!DOCTYPE html><meta charset="UTF-8"><canvas width="500" height="500" style="background:yellow" onmousemove="mousexy(event)" id="canvas">您的瀏覽器版本號碼不支援此功能</canvas><div id = "show"></div><script type="text/javascript">/*function mousexy(n){x=n.clientX;y=n.clientY;document.getElementById("show").innerHTML="座標:x軸"+x+"y軸"+y;}*/var canvas = document.getElementById(‘canvas‘);var cxt = canvas.getContext("2d");var dir=50;var exp=1;//迴轉function start(){cxt.clearRect(0,0,500,500);cxt.beginPath();cxt.fillStyle="skyblue"cxt.arc(200,dir,50,0,360,false)cxt.closePath();cxt.fill();dir = dir+exp;if(dir==0||dir==500){exp = exp*-1;}}function end(){}</script><button id="start" onclick="tt=setInterval(start,10);"> 開始</button><button id="end" onclick="clearInterval(tt);">結束</button>
著作權聲明:本文博主原創文章。部落格,未經同意不得轉載。
霸氣側漏HTML5--之--canvas(1) api + 彈球例子