利用canvas绘制时钟
window.onload = function () {
var canvas = document.querySelector('canvas');
var context = canvas.getContext('2d');
// 绘制圆盘
function clock() {
//绘制圆盘
context.beginPath();
context.arc(300, 300, 200, 0, Math.PI * 2);
context.fillStyle = 'pink';
context.fill();
context.closePath();
//绘制时刻度
for (i = 0;
i < 12;
i++) {
context.save();
context.lineWidth = 4;
context.beginPath();
//将原点平移300,300
context.translate(300, 300);
context.rotate(i * (Math.PI / 6));
context.moveTo(0, -180);
context.lineTo(0, -200);
context.stroke();
context.fillStyle = 'black';
context.rotate(Math.PI / 6);
context.fillText(i + 1, -8, -220);
context.closePath();
context.restore();
}//绘制分刻度
for (i = 0;
i < 60;
i++) {
context.save();
context.lineWidth = 1;
context.beginPath();
//将原点平移300,300
context.translate(300, 300);
context.rotate(i * (Math.PI / 30));
context.moveTo(0, -190);
context.lineTo(0, -200);
context.stroke();
context.closePath();
context.restore();
}// 获取当前时间
var today = new Date();
var hour = today.getHours();
var min = today.getMinutes();
var sec = today.getSeconds();
//
hour = hour + min / 60;
// 绘制时针
context.lineWidth = 3
context.save();
context.translate(300, 300);
context.rotate(hour * Math.PI / 6);
context.beginPath();
context.moveTo(0, 10)
context.lineTo(0, -80);
context.stroke()
context.closePath();
context.restore();
// 绘制分针
context.lineWidth = 2;
context.save();
context.translate(300, 300);
context.rotate(min * (Math.PI / 30));
context.beginPath();
context.moveTo(0, 10);
context.lineTo(0, -100);
context.stroke()
context.closePath();
context.restore();
// 绘制秒针
context.lineWidth = 1;
context.save();
context.translate(300, 300);
context.rotate(sec * Math.PI / 30);
context.beginPath();
context.moveTo(0, 10);
context.lineTo(0, -120);
context.strokeStyle = 'red';
context.stroke()
context.closePath();
context.restore();
// 绘制交叉处
// context.lineWidth=1
context.save();
context.translate(300, 300);
context.beginPath();
context.arc(0, 0, 5, 0, Math.PI * 2);
context.fill();
context.fillStyle = '#ccc'
context.strokeStyle = 'red'
context.stroke()
context.closePath();
context.restore();
setInterval(clock, 1000)//超时模拟间歇
}
clock();
}
【利用canvas绘制时钟】效果图如下:
文章图片
推荐阅读
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- canvas(一)基本用法
- 【万伽复利】什么是复利(如何利用复利赚钱?)
- 苹果手机如何利用库乐队自制铃声
- Python绘制小红花
- vue|vue canvas 手绘进度条动画
- canvas不过如此(一)
- HTML|HTML canvas中translate()与rotate()的理解
- “没有利用价值的人是很受冷遇的。”
- 可悲的好人