canvas画正负仪表盘
时间: 2023-08-03 13:12:07 浏览: 73
H5 Canvas百分比仪表盘特效
好的,以下是一个简单的 HTML5 Canvas 实现正负仪表盘的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Canvas 正负仪表盘</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="400"></canvas>
<script>
// 获取 Canvas 元素
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
// 画圆
var centerX = canvas.width / 2;
var centerY = canvas.height / 2;
var radius = 150;
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI);
ctx.stroke();
// 画刻度
ctx.font = "15px Arial";
ctx.textAlign = "center";
var degree = -135;
for (var i = -50; i <= 50; i += 10) {
var angle = (degree + i * 2.7) * Math.PI / 180;
var x = centerX + (radius - 20) * Math.cos(angle);
var y = centerY + (radius - 20) * Math.sin(angle);
ctx.fillText(i, x, y);
}
// 画指针
var value = -30;
var angle = (value / 50 * 135 - 135) * Math.PI / 180;
ctx.beginPath();
ctx.moveTo(centerX, centerY);
ctx.lineTo(centerX + (radius - 30) * Math.cos(angle), centerY + (radius - 30) * Math.sin(angle));
ctx.stroke();
</script>
</body>
</html>
```
代码中,我们使用了 Canvas 的 `getContext()` 方法获取渲染上下文,然后使用 `arc()` 方法画圆,使用 `fillText()` 方法画刻度,使用 `moveTo()` 和 `lineTo()` 方法画指针。
需要注意的是,正负仪表盘的刻度范围一般是 -50 到 50,共计 11 个刻度,因此我们使用 `for` 循环画刻度时,步长为 10,从 -50 开始循环。
另外,为了使指针旋转时保持不变形,我们需要将角度转换为弧度进行计算和绘制。具体实现方法可以参考代码中的 `angle` 变量计算。
阅读全文