通過html5 canvas繪製時鐘
最近一直在學習html5,學到了html5的canvas標籤,這個畫布真的是很強大,它有對應的javascript的api的支援,你可以在這個標籤裡面繪製任意的圖形,你也可以把圖片放在裡面,能夠做出很炫的效果。
言歸正傳,廢話不多說,首先,html,只一句設定畫布的id,寬度和高度
<canvas id="myCanvas" width="200" height="200" ></canvas>
下面就javascript,不多說什麼了,都是基本的語法,很容易明白的,裡面的主要地方也有解釋:
注:
1.stroke()方法繪製當前路徑的邊框。路徑定義的幾何線條產生了,但線條的視覺化取決於 strokeStyle、lineWidth、lineJoin、lineCap 和 miterLimit 等屬性。
2.save() 方法把當前狀態的一份拷貝壓入到一個儲存影象狀態的棧中。這就允許您臨時地改變影象狀態,然後,通過呼叫 restore() 來恢復以前的值
3.translate() 方法為畫布的變換矩陣新增水平的和垂直的偏移。引數 dx 和 dy 新增給後續定義路徑中的所有點。
4.scale() 方法為畫布的當前變換矩陣新增一個縮放變換。縮放通過獨立的水平和垂直縮放因子來完成。例如,傳遞一個值 2.0 和 0.5 將會導致繪圖路徑寬度變為原來的兩倍,而高度變為原來的 1/2。指定一個負的 sx 值,會導致 X 座標沿 Y 軸對摺,而指定一個負的 sy 會導致 Y 座標沿著 X 軸對摺。
5.rotate() 方法通過指定一個角度,改變了畫布座標和 Web 瀏覽器中的 元素的畫素之間的對映,使得任意後續繪圖在畫布中都顯示為旋轉的。它並沒有旋轉 元素本身。注意,這個角度是用弧度指定的。
window.onload=function(){
clock();
setInterval(clock,1000);///每一秒鐘重新繪製一次
};
function clock(){
///得到時分秒
var now=new Date();
var sec=now.getSeconds(),min=now.getMinutes(),hour=now.getHours();
hour=hour>=12?hour-12:hour;
var c=document.getElementById("myCanvas" ).getContext("2d");
c.save();
c.clearRect(0,0,150,150); ///初始化畫布
c.translate(75,75);
c.scale(0.4,0.4);
c.rotate(-Math.PI/2);
c.strokeStyle="black";
c.fillStyle="black";
c.lineWidth=8;
c.lineCap="round";
c.save();
c.beginPath();
for(var i=0;i<12;i++){///小時刻度
c.rotate(Math.PI/6);
c.moveTo(100,0);
c.lineTo(120,0);
}
c.stroke();
c.restore();
c.save();
c.lineWidth=5;
c.beginPath();
for(var i=0;i<60;i++){///分鐘刻度
if(i%5!=0){
c.moveTo(117,0);
c.lineTo(120,0);
}
c.rotate(Math.PI/30);
}
c.stroke();
c.restore();
c.save();
c.rotate((Math.PI/6)*hour+(Math.PI/360)*min+(Math.PI/21600)*sec);///畫上時針
c.lineWidth=14;
c.beginPath();
c.moveTo(-20,0);
c.lineTo(75,0);
c.stroke();
c.restore();
c.save();
c.rotate((Math.PI/30)*min+(Math.PI/1800)*sec);///分針
c.strokeStyle="#29A8DE";
c.lineWith=10;
c.beginPath();
c.moveTo(-28,0);
c.lineTo(102,0);
c.stroke();
c.restore();
c.save();
c.rotate(sec*Math.PI/30);///秒針
c.strokeStyle="#D40000";
c.lineWidth=6;
c.beginPath();
c.moveTo(-30,0);
c.lineTo(83,0);
c.stroke();
c.restore();
c.save();
///表框
c.lineWidth=14;
c.strokeStyle="#325FA2";
c.beginPath();
c.arc(0,0,142,0,Math.PI*2,true);
c.stroke();
c.restore();
c.restore();
}
最後截張圖看看效果:
相關推薦
通過html5 canvas繪製時鐘
最近一直在學習html5,學到了html5的canvas標籤,這個畫布真的是很強大,它有對應的javascript的api的支援,你可以在這個標籤裡面繪製任意的圖形,你也可以把圖片放在裡面,能夠做出很炫的效果。 言歸正傳,廢話不多說,首先,html,只一句
canvas繪製時鐘
css樣式 <style> body { background: black } #canvas { background: white; } </style> html <c
HTML5 Canvas繪製的圖形的事件處理
DOM是Web前端領域非常重要的組成部分,不僅在處理HTML元素時會用到DOM,圖形程式設計也同樣會用到。比如SVG繪圖,各種圖形都是以DOM節點的形式插入到頁面中,這就意味著可以使用DOM方法對圖形進行操作。比如有一個<path id="p1">元素,可以直
HTML5 Canvas 繪製橢圓與橢圓弧的實現
由於HTML Canvas 2D Context標準中並沒有直接繪製橢圓與橢圓弧的方法,所以瀏覽器普遍沒有這個方法,不過,Chrome支援ellipse方法,至於從哪個版本開始支援的,我就未查證了。IE11,Edge, Firefox, Safari目前最新版都還不支援。
HTML5 canvas 繪製圓形
canvas繪製圓形的思路: 1、建立路徑 XXX.beginpath(); 2、建立圓形的路徑; 3、關閉路徑;XXX.closepath(); 路徑不關閉也能繪製出圖形 4、設定繪製樣式。 建立圓形路徑時需要用到物件的arc方法,方法定義如:XXX.arc(x,y,r
HTML5 canvas 繪製的文字如何換行?
HTML5 裡的 canvas 元素是一個圖形容器,我們可以通過 JavaScript 來控制它繪製各種文字和影象。 在使用 canvas 繪製某字串的時候,我們可能想要讓該字串在某處按要求換行。 這該怎麼實現呢? 你是不是想到了 JavaScript 裡
Html5 canvas 繪製彩票走勢圖
因需要 要實現一個類似彩票走勢圖的功能,初次學Html5 ,很多地方不明白,前段時間也發帖請教過這個問題,也是沒給個明確說話,在網上搜了很多,也沒有實現的例子,今天仔細研究了下,發現其實也不是很難,現將程式碼貼出來,共同學習! 先來一張效果圖: 實現的程式碼: <!
HTML5 Canvas繪製環形進度條
最近比較迷戀canvas,加之做了一個個人網站,有用到環形進度條,記錄下來。 canvas中沒有直接繪製圓的方法,但有一個繪製弧線的context.arc方法, 下面講下用該方法如何繪製出圖片效果。 arc()方法介紹 context.arc(x,y,r,s
html5 canvas繪製圓形印章,以及與頁面互動
來源:https://www.cnblogs.com/hello-word1/p/5137626.html <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF
[SoOnPerson] HTML5 Canvas 模擬時鐘
因為和朋友在討論一個關於時鐘的問題: 一天(24h),時鐘的分針和時針可以重合多少次,他們一直在爭論22,23然後我覺得蠻好玩的,就寫了一個看看,但是對於22,23,我也沒想數過//螢幕的高度 var sc_height = screen.availHeight; //
第一講:使用html5——canvas繪製奧運五環
<html> <head> <title>初識canvas</title> </head> <body> <canvas id="mc" width="400px" height
html5 畫布繪製時鐘
用Html5實現時鐘,包括轉盤時鐘和電子時鐘,顯示當前日期時間繪製步驟:(1)先獲取畫布,設定畫布的大小;(2)在js中獲取畫布物件,獲取畫布的畫筆物件,設定畫筆的一些屬性;(3)獲取系統當前時間,轉換成時分秒,用變數儲存下來;(4)先畫分鐘刻度線,每6°畫一條線,共60條刻
基於HTML5 Canvas繪製的支援手勢縮放的室內地圖
你是否有過這樣的經歷,在大型的商圈、商場中傻傻找不到路。嗯,室內地圖就這樣應運而生了。百度地圖、高德地圖等都提供了室內地圖的功能,高德地圖最近還把室內地圖的API開放了。室內地圖的導航、定位功能一定是未來幾年非常有前途的一件事。本文提供了一種基於HTML5
arcgis api for js入門開發系列二十一 用HTML5 canvas繪製地圖 瓦片載入平移縮放
終於開始可以寫程式碼了,手都開始癢了。這裡的程式碼僅僅是在chrome檢測過,我可以肯定的是IE10以下瀏覽器是行不通,我一直在考慮,是不是使用IE禁止看我的篇部落格,就是這群使用IE的人,給我加了很多工作量。 一個地圖的基本動作,無非就是載入資料,
html5 canvas 繪製橫線豎線時不清晰的解決辦法
在繪製一個Tip模樣的圖案時遇到了令人鬱悶的事情:當lineHeight為1時,斜線都很清晰,唯獨橫線和豎線不清晰,目測佔了兩個畫素,而且透明度都被減半;如圖: ,後來經過查資料,終於知道,畫布上的座標並未對應網頁裡的畫素,假如我們要在10,10這個點畫橫線到100,10,
html5 canvas 繪製曲線圖
程式碼: <!Doctype Html> <html> <head> <title>Line Chart Demo</title> <meta http-equiv="Content-T
HTML5 Canvas中繪製橢圓的幾種方法
1.canvas自帶的繪製橢圓的方法 ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)是後來新增的, 引數的意思:(起點x.起點y,半徑x,半徑y,旋轉的角度,起始角,結果角,順時針還是逆時針)
Android自定義View——canvas 繪製一個會動的時鐘
文章目錄 ####1、功能例項 用canvas 繪製一個 會動的 指標式 時鐘 ####2、程式碼架構 ####3、主要功能程式碼 activity_main.xml 檔案 <?xml version="1.0" encodin
html5 canvas 標籤繪製圖像且漸變色處理
html5 提供了很多很強大的功能,有些功能甚至可以擺脫伺服器的限制,減少對伺服器的訪問。canvas就是一個html5 新增的強大標籤。雖然功能有待完善,但已然可以解決一些網頁問題。 今天主要講ca
使用canvas繪製LED時鐘
1 <script type="text/javascript"> 2 var canvas,ctx; 3 var canvasW = 900,canvasH = 260; 4 var clockBox = document.g