canvas繪製圓形鐘錶程式碼例項
分享一段程式碼例項,它實現了使用canvas繪製圓形鐘錶的功能。
並且鐘錶能夠實時獲取本機時間自動更新走動。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ text-align:center; margin-top:250px; } </style> <script type="text/javascript"> window.onload = function() { var c = document.getElementById("clock"); var ctx = c.getContext('2d'); var width = ctx.canvas.width; var height = ctx.canvas.width; var r = width / 2; var rem = width / 200; function drawBackground() { ctx.save(); ctx.translate(r, r); ctx.beginPath(); ctx.lineWidth = 10 * rem; ctx.arc(0, 0, r - ctx.lineWidth / 2, 0, 2 * Math.PI); ctx.stroke(); var hourNumbers = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2]; ctx.font = 18 * rem + "px Arial"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; hourNumbers.forEach(function(number, i) { var rad = 2 * Math.PI / 12 * i; var x = Math.cos(rad) * (r - 30 * rem); var y = Math.sin(rad) * (r - 30 * rem); ctx.fillText(number, x, y); }) for (var i = 0; i < 60; i++) { var rad = 2 * Math.PI / 60 * i; var x = Math.cos(rad) * (r - 15 * rem); var y = Math.sin(rad) * (r - 15 * rem); ctx.beginPath(); if (i % 5 == 0) { ctx.fillStyle = '#000'; ctx.arc(x, y, 2 * rem, 0, 2 * Math.PI) } else { ctx.fillStyle = '#ccc'; ctx.arc(x, y, 2 * rem, 0, 2 * Math.PI) } ctx.fill(); } } function drawHour(hour, minute) { ctx.save(); ctx.beginPath(); var rad = 2 * Math.PI / 12 * hour; var mrad = 2 * Math.PI / 12 / 60 * minute; ctx.rotate(rad + mrad); ctx.lineWidth = 6 * rem; ctx.lineCap = 'round'; ctx.moveTo(0, 10 * rem); ctx.lineTo(0, -r / 2); ctx.stroke(); ctx.restore() } function drawMinute(minute) { ctx.save(); ctx.beginPath(); var rad = 2 * Math.PI / 60 * minute; ctx.rotate(rad); ctx.lineWidth = 3 * rem; ctx.lineCap = 'round'; ctx.moveTo(0, 10 * rem); ctx.lineTo(0, -r + 35 * rem); ctx.stroke(); ctx.restore() } function drawSecond(second) { ctx.save(); ctx.beginPath(); ctx.fillStyle = '#c14543'; var rad = 2 * Math.PI / 60 * second; ctx.rotate(rad); ctx.moveTo(-2 * rem, 20 * rem); ctx.lineTo(2 * rem, 20 * rem); ctx.lineTo(1, -r + 18 * rem); ctx.lineTo(-1, -r + 18 * rem); ctx.fill(); ctx.restore() } function drawDot() { ctx.beginPath(); ctx.fillStyle = '#fff'; ctx.arc(0, 0, 3 * rem, 0, 2 * Math.PI); ctx.fill(); } function draw() { ctx.clearRect(0, 0, width, height) var now = new Date(); var hour = now.getHours(); var minute = now.getMinutes(); var second = now.getSeconds(); drawBackground(); drawHour(hour, minute); drawMinute(minute); drawSecond(second); drawDot(); ctx.restore(); } draw(); setInterval(draw, 1000) } </script> </head> <body> <div> <canvas id="clock" width="300" height="300"></canvas> </div> </body> </html>
相關文章
- css繪製圓形程式碼例項CSS
- canvas原型鐘錶效果程式碼例項Canvas原型
- canvas繪製圓盤走動鐘錶效果Canvas
- canvas繪製扇形程式碼例項Canvas
- canvas 繪製圓形Canvas
- canvas繪製網格程式碼例項Canvas
- canvas繪製機器貓程式碼例項Canvas
- canvas繪製拋物線程式碼例項Canvas線程
- canvas繪製箭頭效果程式碼例項Canvas
- 使用canvas繪製圓形進度條Canvas
- SVG圓形鐘錶效果SVG
- canvas圓形時鐘效果Canvas
- canvas繪製圓形框效果不填充內部Canvas
- JavaScript 動態圓形鐘錶JavaScript
- 例項QT程式 —— Qt自繪製小時鐘QT
- canvas 繪製圓角矩形Canvas
- 【Web前端基礎知識】如何使用Canvas繪製圓形Web前端Canvas
- Vue canvas繪製圓形進度條動畫載入VueCanvas動畫
- SVG拖動繪製矩形程式碼例項SVG
- Python例項:僅繪製圖例而不繪製實際的圖形Python
- canvas繪製不重合的圓Canvas
- canvas 繪製立體圓環Canvas
- SVG <circle> 繪製圓形SVG
- canvas 例項之鬧鐘Canvas
- 微信小程式 canvas圓角矩形的繪製微信小程式Canvas
- CSS繪製橢圓程式碼CSS
- JavaScript動態圓形鐘錶效果詳解JavaScript
- 使用canvas繪製圓弧動畫Canvas動畫
- canvas繪製多個圓圈效果Canvas
- canvas刮刮樂程式碼例項Canvas
- canvas載入效果程式碼例項Canvas
- Canvas 繪製 3d 圓柱體Canvas3D
- CSS橢圓效果程式碼例項CSS
- CSS3圓形時鐘效果程式碼CSSS3
- canvas核心技術-如何繪製圖形Canvas
- canvas氣泡上浮效果程式碼例項Canvas
- CSS3繪製太極圖程式碼例項詳解CSSS3
- WPF基礎:在Canvas上繪製圖形Canvas