canvas實現的圓形走動鐘錶效果
分享一段程式碼例項,它實現了走動的圓形鐘錶效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #canvas1 { margin: 0 auto; display: block; box-shadow: 5px 5px 5px gainsboro; } </style> </head> <body> <canvas id="canvas1" width="650" height="650"></canvas> </body> <script type="text/javascript"> var canvas = document.getElementById("canvas1"); var ctx = canvas.getContext("2d"); //通過平移和旋轉改變畫筆的原始位置和x軸y軸的方向 ctx.translate(300, 300); ctx.rotate(-Math.PI / 2); //逆時針旋轉90度 //繪製錶盤 function drawDial() { //外層圓 ctx.beginPath(); ctx.arc(0, 0, 300, 0, Math.PI * 2, false); ctx.fillStyle = 'lightskyblue'; ctx.fill(); //內層圓 ctx.beginPath(); ctx.arc(0, 0, 280, 0, Math.PI * 2, false); ctx.fillStyle = 'beige'; ctx.fill(); } //繪製刻度 時刻和分刻 function drawScale() { for (var i = 0; i < 60; i++) { if (i % 5 == 0) { //繪製時刻 整點 ctx.beginPath(); ctx.moveTo(240, 0); ctx.lineTo(270, 0); ctx.lineWidth = 10; ctx.strokeStyle = 'black'; ctx.stroke(); } else { //繪製分刻 非整點 ctx.beginPath(); ctx.moveTo(250, 0); ctx.lineTo(270, 0); ctx.lineWidth = 5; ctx.strokeStyle = 'gray'; ctx.stroke(); } //旋轉6度 ctx.rotate(Math.PI / 180 * 6) } } //繪製時針,分針,秒針 function drawTime() { //獲取當前的系統時間 var time = new Date(); var hour = time.getHours(); var minute = time.getMinutes(); var second = time.getSeconds(); //呼叫save函式,儲存當前的繪製狀態 ctx.save(); //旋轉角度(座標軸) ctx.rotate(Math.PI / 180 * 30 * hour + Math.PI / 180 * minute * 60 * 30) //繪製時針 ctx.beginPath(); ctx.moveTo(-20, 0); ctx.lineTo(160, 0); ctx.lineWidth = 13; ctx.strokeStyle = 'black'; ctx.stroke(); ctx.restore(); //分針 ctx.save(); ctx.rotate(Math.PI / 180 * 6 * minute + Math.PI / 180 * second / 60 * 6); //繪製分針 ctx.beginPath(); ctx.moveTo(-30, 0); ctx.lineTo(210, 0); ctx.lineWidth = 8; ctx.strokeStyle = 'black'; ctx.stroke(); ctx.restore(); //秒針 ctx.save(); ctx.rotate(Math.PI / 180 * 6 * second); //繪製秒針 ctx.beginPath(); ctx.moveTo(-40, 0); ctx.lineTo(250, 0); ctx.lineWidth = 3; ctx.strokeStyle = 'red'; ctx.stroke(); ctx.restore(); ctx.beginPath(); ctx.arc(0, 0, 15, 0, Math.PI * 2, false); ctx.fillStyle = 'rgba(192,192,192,0.9)'; ctx.fill(); } //繪製鐘錶 function drawClock() { drawDial(); drawScale(); drawTime(); //重新整理頻率,重新呼叫 window.requestAnimationFrame(drawClock); } drawClock(); </script> </html>
相關文章
- canvas繪製圓盤走動鐘錶效果Canvas
- canvas實現的圓形鐘錶效果程式碼例項Canvas
- canvas實現的圓形時鐘效果Canvas
- jquery自動走動的圓形鐘錶效果程式碼例項jQuery
- jquery和css實現的圓形鐘錶效果jQueryCSS
- SVG圓形鐘錶效果SVG
- JavaScript圓形鐘錶效果JavaScript
- canvas圓形時鐘效果Canvas
- js和css3實現的圓形鐘錶效果JSCSSS3
- JavaScript動態圓形鐘錶效果詳解JavaScript
- css3動態圓形鐘錶效果CSSS3
- JavaScript 動態圓形鐘錶JavaScript
- canvas繪製圓形鐘錶程式碼例項Canvas
- css3和js實現的圓形鐘錶效果程式碼例項CSSS3JS
- javascript圓形電子鐘錶效果程式碼例項JavaScript
- PyQt實現鐘錶效果QT
- canvas圓形隨機漂浮效果Canvas隨機
- javascript圓形鐘錶程式碼例項JavaScript
- canvas原型鐘錶效果程式碼例項Canvas原型
- canvas實現的動態心形效果程式碼例項Canvas
- canvas繪製鐘錶效果程式碼例項Canvas
- canvas動態時鐘效果Canvas
- canvas實現的鐘表效果程式碼例項Canvas
- CSS3圓形時鐘效果程式碼CSSS3
- canvas繪製圓形框效果不填充內部Canvas
- css實現圓形、橢圓和半圓效果程式碼例項CSS
- canvas實現的絢麗的電子時鐘效果Canvas
- Flutter實現圓形波浪進度球【canvas+animation】FlutterCanvas
- canvas 繪製圓形Canvas
- 【譯】使用CSS Transitions實現圓形懸停效果CSS
- 圓形放大的hover效果
- 圓形 ImageView 的實現方法View
- SVG點選實現動態放大的圓效果SVG
- canvas實現波浪效果Canvas
- canvas實現 漂亮的下雨效果Canvas
- 使用 HTML5 Canvas 實現圓形圖片裁剪並上傳HTMLCanvas
- canvas繪製實心圓形程式碼例項Canvas
- Android 圓角、圓形 ImageView 實現AndroidView