本文介绍了canvas如何绘制钟表的方法,分享给大家,具体如下:
效果图为
上代码:
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var year,month,day,hour,second,minute; // 绘制表盘 function drawClockPie(){ ctx.beginPath(); ctx.lineWidth = 2; ctx.strokeStyle = '#333'; ctx.arc(150,150,146,0,2*Math.PI); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.arc(150,150,6,0,2*Math.PI); ctx.fillStyle = 'red'; ctx.fill(); ctx.closePath(); } // 绘制时刻度 function drawClockHours(){ for(var i = 0,l = 12; i < 12; i++){ ctx.save(); ctx.translate(150,150); ctx.rotate(i*1/12*2*Math.PI); ctx.beginPath(); ctx.lineWidth = 5; ctx.strokeStyle = '#333'; ctx.moveTo(0,-140); ctx.lineTo(0,-125); ctx.stroke(); ctx.closePath(); ctx.restore(); } } // 绘制分刻度 function drawClockMins(){ for(var i = 0,l = 60; i < 60; i++){ ctx.save(); ctx.translate(150,150); ctx.rotate(i*1/60*2*Math.PI); ctx.beginPath(); ctx.lineWidth = 3; ctx.strokeStyle = '#333'; ctx.moveTo(0,-140); ctx.lineTo(0,-133); ctx.stroke(); ctx.closePath(); ctx.restore(); } } // 绘制时针 function drawHourPin(){ ctx.save(); ctx.translate(150,150); ctx.rotate((hour*60*60+minute*60+second)/(12*60*60)*2*Math.PI); ctx.beginPath(); ctx.strokeStyle = '#333'; ctx.lineWidth = 3; ctx.moveTo(0,0); ctx.lineTo(0,-40); ctx.stroke(); ctx.closePath(); ctx.restore(); } // 绘制分针 function drawMinPin(){ ctx.save(); ctx.translate(150,150); ctx.rotate((minute*60+second)/(60*60)*2*Math.PI); ctx.beginPath(); ctx.strokeStyle = '#333'; ctx.lineWidth = 2; ctx.moveTo(0,0); ctx.lineTo(0,-60); ctx.stroke(); ctx.closePath(); ctx.restore(); } // 绘制秒针 function drawSecPin(){ ctx.save(); ctx.translate(150,150); ctx.rotate(second/60*2*Math.PI); ctx.beginPath(); ctx.strokeStyle = 'red'; ctx.lineWidth = 1; ctx.moveTo(0,0); ctx.lineTo(0,-80); ctx.stroke(); ctx.closePath(); ctx.restore(); } // 绘制时间文字 function drawText(){ hour = hour >= 12 ? hour - 12 : hour; var time = '现在是' + year + '年' + month + '月' + day + '日' + hour + '时' + minute + '分' + second + '秒'; ctx.font = '15px 黑体'; ctx.fillText(time,24,350); } // 获取时间 function getTimes(){ var date = new Date(); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); hour = date.getHours(); minute = date.getMinutes(); second = date.getSeconds(); } setInterval(function(){ ctx.clearRect(0,0,600,600); drawClockPie(); drawClockHours(); drawClockMins(); getTimes(); drawText(); drawHourPin(); drawMinPin(); drawSecPin(); },1000);
注:
当然时间也可以不用这样每隔一秒就获取,直接获取一次按秒递增就行。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
岱庙资源网 Copyright www.zgmyg.com
暂无“canvas如何绘制钟表的方法”评论...
更新日志
2024年11月15日
2024年11月15日
- 刘力扬.2019-Neon.Lit虹【摩登天空】【FLAC分轨】
- 群星.2002-恋爱物语情歌对唱精选2CD(引进版)【滚石】【WAV+CUE】
- 群星《闽南情24K德国HD金碟》2CD[WAV+CUE]
- 周传雄《恋人创世纪》环球唱片[WAV+CUE]
- 关淑怡-《真假情话K2HD》(日本压制)【WAV+CUE】
- 王菲 -《Faye Wong》雨果LPCD45 [WAV+分轨][1G]
- 陈百强《世纪10星·永恒篇》环球[WAV+CUE][1G]
- 陈奕迅《黑·白·灰》台湾版[WAV+CUE][400M]
- 张尕怂.2024-甘肃娃娃【FLAC分轨】
- 张惠妹.2011-A.MEI.ACOUSTIC.BEST.2CD【丰华】【WAV+CUE】
- ZEN.1996-珍惜所有【华纳】【WAV+CUE】
- 群星《环球国语元素》香港首版[WAV+CUE][1G]
- 周慧敏《玉女天后》原音母版1:1直刻[WAV+CUE][1G]
- 谭咏麟《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- 炉石传说40轮盘术最新卡组代码在哪找 标准40轮盘术卡组代码分享