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>
相關文章
- canvas繪製鐘錶效果程式碼例項Canvas
- canvas繪製實心圓形程式碼例項Canvas
- canvas實現的圓形鐘錶效果程式碼例項Canvas
- javascript圓形鐘錶程式碼例項JavaScript
- css繪製圓形程式碼例項CSS
- canvas繪製圓角矩形程式碼例項Canvas
- canvas繪製橢圓效果程式碼例項Canvas
- canvas繪製網狀圓圈程式碼例項Canvas
- javascript圓形電子鐘錶效果程式碼例項JavaScript
- canvas繪製圓盤走動鐘錶效果Canvas
- canvas 繪製圓形Canvas
- canvas原型鐘錶效果程式碼例項Canvas原型
- canvas繪製扇形程式碼例項Canvas
- canvas繪製星星程式碼例項Canvas
- canvas 繪製雞蛋程式碼例項Canvas
- jquery自動走動的圓形鐘錶效果程式碼例項jQuery
- border-radius繪製圓形圖案程式碼例項
- svg繪製半圓程式碼例項SVG
- canvas繪製網格程式碼例項Canvas
- canvas繪製笑臉程式碼例項Canvas
- canvas繪製圓環效果程式碼例項Canvas
- css3和js實現的圓形鐘錶效果程式碼例項CSSS3JS
- canvas繪製米字旗程式碼例項Canvas
- canvas繪製箭頭效果程式碼例項Canvas
- canvas繪製拋物線程式碼例項Canvas線程
- canvas繪製機器貓程式碼例項Canvas
- canvas繪製夜空小屋效果程式碼例項Canvas
- canvas繪製熊貓頭像程式碼例項Canvas
- canvas繪製圓形圖案程式碼示例簡單介紹Canvas
- canvas繪製魚吃豆效果程式碼例項Canvas
- canvas繪製雪花飄落效果程式碼例項Canvas
- html5利用canvas圓形和多邊形程式碼例項HTMLCanvas
- 使用canvas繪製圓形進度條Canvas
- html5中canvas繪製圓形HTMLCanvas
- canvas實現的圓形走動鐘錶效果Canvas
- javascript繪製心形圖案程式碼例項JavaScript
- canvas繪製機器貓頭像程式碼例項Canvas
- canvas繪製矩形並填充顏色程式碼例項Canvas