這篇文章將為大家詳細講解有關html5中如何使用canvas實現圓形時鐘,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML CLOCK</title> </head> <body> <canvas width="500" height="500" id="clock"> 你的瀏覽器不支持canvas標簽,時針顯示不出來哦! </canvas> <script type="text/javascript"> //畫布背景顏色 var clockBackGroundColor = "#ABCDEF"; //時針顏色 var hourPointColor = "#000"; //時針粗細 var hourPointWidth = 7; //時針長度 var hourPointLength = 100; //分針顏色 var minPointColor = "#000"; //分針粗細 var minPointWidth = 5; //分針長度 var minPointLength = 150; //秒針顏色 var secPointColor = "#F00"; //秒針粗細 var secPointWidth = 3; //秒針長度 var secPointLength = 170; //表盤顏色 var clockPanelColor = "#ABCDEF"; //表盤刻度顏色 var scaleColor = "#000"; //表盤大刻度寬度 3 6 9 12 var scaleBigWidth = 9; //表盤大刻度的長度 var scaleBigLength = 15; //表盤小刻度的寬度 var scaleSmallWidth = 5; //表盤小刻度的長度 var scaleSmallLength = 10; //圓心顏色 var centerColor = 'red'; //時鐘畫布 var clock = document.getElementById('clock'); clock.style.background = clockBackGroundColor; //時針畫布的作圖環境(畫板) var panel = clock.getContext('2d'); //畫線 /** *畫線段 * * */ function drowLine(p,width,color,startX,startY,endX,endY,ran,cX,cY){ //保存傳入的畫板,相當于每次作畫新開一個圖層 p.save(); //設置畫筆寬度 p.lineWidth = width; //設置畫筆顏色 p.strokeStyle = color; //新開啟作圖路徑,避免和之前畫板上的內容產生干擾 p.beginPath(); p.translate(cX,cY); //旋轉 p.rotate(ran); //移動畫筆到開始位置 p.moveTo(startX,startY); //移動畫筆到結束位置 p.lineTo(endX,endY); //畫線操作 p.stroke(); //關閉作圖路徑,避免和之后在畫板上繪制的內容產生干擾 p.closePath(); //在傳入的畫板對象上覆蓋圖層 p.restore(); } /** *畫水平線 */ function drowHorizontalLine(p,width,length,color,startX,startY,ran,cX,cY){ drowLine(p,width,color,startX,startY,startX+length,startY,ran,cX,cY); } /** *畫圈圈 */ function drowCircle(p,width,color,centreX,centreY,r){ p.save(); //設置畫筆寬度 p.lineWidth = width; //設置畫筆顏色 p.strokeStyle = color; //新開啟作圖路徑,避免和之前畫板上的內容產生干擾 p.beginPath(); //畫圈圈 p.arc(centreX,centreY,r,0,360,false); //畫線操作 p.stroke(); //關閉作圖路徑,避免和之后在畫板上繪制的內容產生干擾 p.closePath(); //在傳入的畫板對象上覆蓋圖層 p.restore(); } function drowPoint(p,width,color,centreX,centreY,r){ p.save(); //設置畫筆寬度 p.lineWidth = width; //設置畫筆顏色 p.fillStyle = color; //新開啟作圖路徑,避免和之前畫板上的內容產生干擾 p.beginPath(); //畫圈圈 p.arc(centreX,centreY,r,0,360,false); //畫線操作 p.fill(); //關閉作圖路徑,避免和之后在畫板上繪制的內容產生干擾 p.closePath(); //在傳入的畫板對象上覆蓋圖層 p.restore(); } function drowScales(p){ //畫小刻度 for(var i = 0;i < 60;i++){ drowHorizontalLine(p,scaleSmallWidth,scaleSmallLength,scaleColor,195-scaleSmallLength,0,i*6*Math.PI/180,250,250); } //畫大刻度 for(var i = 0;i < 12;i++){ drowHorizontalLine(p,i%3==0?scaleBigWidth*1.2:scaleBigWidth,i%3==0?scaleBigLength*1.2:scaleBigLength,scaleColor,195-scaleBigLength,0,i*30*Math.PI/180,250,250); //可以添加數字刻度 } } function drowHourPoint(p,hour){ drowHorizontalLine(p,hourPointWidth,hourPointLength,hourPointColor,-10,0,(hour-3)*30*Math.PI/180,250,250); } function drowMinPoint(p,min){ drowHorizontalLine(p,minPointWidth,minPointLength,minPointColor,-15,0,(min-15)*6*Math.PI/180,250,250); } function drowSecPoint(p,sec){ drowHorizontalLine(p,secPointWidth,secPointLength,secPointColor,-15,0,(sec-15)*6*Math.PI/180,250,250); } function drowClock(){ panel.clearRect(0,0,500,500); panel.fillText("",10,20); panel.fillText("<a href="http://www.jb51.net",10,40">http://www.jb51.net",10,40</a>); var date = new Date(); var sec = date.getSeconds(); var min = date.getMinutes(); var hour = date.getHours() + min/60; drowCircle(panel,7,'blue',250,250,200); drowScales(panel); drowHourPoint(panel,hour); drowMinPoint(panel,min); drowSecPoint(panel,sec); drowPoint(panel,1,centerColor,250,250,7); //drowHorizontalLine(panel,10,10,'red',-5,0,0,250,250); } //drowHorizontalLine(panel,7,30,'#F00',0,0,Math.PI,250,250); drowClock(); setInterval(drowClock,1000); function save(){ var image = clock.toDataURL("image/png").replace("image/png", "image/octet-stream"); location.href=image; } </script> </body> </html>
關于“html5中如何使用canvas實現圓形時鐘”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。