一、仪表盘效果:
2、代码逻辑
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Canvas绘制仪表盘</title>
<style>
body {
background: #969696;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="420" height="420" style="border: 1px red solid;">
浏览器不支持HTML5 canvas标签
</canvas>
<script>
let boundingRect = {
cx: 210,
cy: 210,
width: 420,
height: 420
}
// 画圆
// Canvas对象:ctx
// 圆心坐标: (x, y)
// 半径: radius
// 起始角度: startAngle
// 结束角度: endAngle
// 是否逆时针旋转: false 代表顺时针旋转
// 画笔尺寸
// 画笔颜色
function drawCircle(ctx, x, y, radius, startAngle, endAngle, Boolean, size, color1, color2) {
ctx.beginPath();//beginPath() 方法开始一条路径,或重置当前的路径。
ctx.lineWidth = size;//画笔粗细
ctx.arc(x, y, radius, startAngle, endAngle, Boolean);//路径
let grd = ctx.createLinearGradient(0, y - radius, 0, y + radius);
grd.addColorStop(0, color1);
grd.addColorStop(1, color2);
ctx.strokeStyle = grd;//画笔颜色
// ctx.closePath();//结束路径
ctx.stroke();//开始画
}
// 画内圆
// Canvas对象:ctx
// 圆心坐标: (x, y)
// 半径: radius
// 起始角度: startAngle
// 结束角度: endAngle
// 是否逆时针旋转: false 代表顺时针旋转
// 画笔尺寸
// 画笔颜色
function drawInCi