web前端全系列 教程
1839个小节阅读:2243.2k
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
<canvas width="150" height="150" id="canvas"></canvas>
<script>
var ctx = document.getElementById('canvas').getContext('2d')
ctx.translate(75, 75)//移动原点到画布的正中心
ctx.rotate(-Math.PI / 2)//逆时针旋转九十度
ctx.lineCap = 'round'//设置线条末端样式
ctx.save()
clock()
function clock() {
ctx.clearRect(-75, -75, 150, 150)
// 绘制一个跟画布一样大小的粉色矩形
ctx.fillStyle = 'pink'
ctx.fillRect(-75, -75, 150, 150)
// 获取当前时间
var now = new Date()
// 绘制小时的刻度
ctx.lineWidth = 3//设置线条宽度
for (var i = 0; i < 12; i++) {
ctx.beginPath()
ctx.rotate(Math.PI / 6)
ctx.moveTo(68, 0)
ctx.lineTo(75, 0)
ctx.stroke()
}
// 绘制分钟的刻度
ctx.lineWidth = 2//设置线条宽度
for (var i = 0; i < 60; i++) {
// 如果i除以五的余数不为0,则代表不跟小时的刻度重合,则绘制分钟的刻度
if (i % 5 != 0) {
ctx.beginPath()
ctx.moveTo(72, 0)
ctx.lineTo(75, 0)
ctx.stroke()
}
ctx.rotate(Math.PI / 30)
}
var hour = now.getHours()
var min = now.getMinutes()
var sec = now.getSeconds()
hour = hour > 12 ? hour - 12 : hour
console.log(hour)
console.log(min)
console.log(sec)
// 绘制时针
ctx.restore()
ctx.save()
ctx.lineWidth = 5
ctx.rotate((Math.PI / 6) * (hour + min / 60 + sec / 3600))
ctx.beginPath()
ctx.moveTo(-10, 0)
ctx.lineTo(40, 0)
ctx.stroke()
// 绘制分针
ctx.restore()
ctx.save()
ctx.lineWidth = 4
ctx.rotate((Math.PI / 30) * (min + sec / 60))
ctx.beginPath()
ctx.moveTo(-10, 0)
ctx.lineTo(60, 0)
ctx.stroke()
// 绘制秒针
ctx.restore()
ctx.save()
ctx.lineWidth = 3
ctx.rotate((Math.PI / 30) * (sec))
ctx.beginPath()
ctx.moveTo(-10, 0)
ctx.lineTo(60, 0)
ctx.strokeStyle = 'red'
ctx.stroke()
// 在原点处绘制红色小圆点
ctx.beginPath()
ctx.arc(0, 0, 5, 0, 2 * Math.PI)
ctx.fillStyle = 'red'
ctx.fill()
// 在秒针末端绘制小圆圈
ctx.beginPath()
ctx.arc(65, 0, 5, 0, 2 * Math.PI)
ctx.stroke()
ctx.restore()
}
setInterval(function () {
clock()
}, 1000)
实时效果反馈
1.要保存当前的画布状态使用以下哪个方法:
A ctx.save()
Bctx.restore()
答案
1=>A