1. 程式人生 > >通過html5 canvas繪製時鐘

通過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