js实现弧形
使用Canvas绘制弧形
Canvas的arc()方法可以绘制弧形或圆形。该方法需要圆心坐标(x, y)、半径、起始角度和结束角度(以弧度计)。
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, Math.PI, false); // 绘制半圆
ctx.stroke();
参数说明:
x, y:圆心坐标radius:半径startAngle:起始角度(0表示3点钟方向)endAngle:结束角度anticlockwise:可选,布尔值,true表示逆时针,false表示顺时针
使用SVG绘制弧形
SVG的<path>元素可以创建复杂形状,包括弧形。使用路径命令"A"或"a"绘制弧形。
<svg width="200" height="200">
<path d="M100,50 a50,50 0 0,1 50,50" fill="none" stroke="black"/>
</svg>
路径命令参数:

M100,50:移动到起始点(100,50)a50,50:x半径50,y半径500:旋转角度0,1:大圆弧标志和顺时针标志50,50:结束点相对于起始点的偏移
使用CSS绘制弧形
CSS的border-radius属性可以创建弧形效果,结合伪元素实现更复杂的弧形。
.arc {
width: 100px;
height: 50px;
border-top-left-radius: 100px;
border-top-right-radius: 100px;
background: blue;
}
这种方法适合简单的弧形显示,但无法实现精确的弧形控制。

使用数学函数计算弧形点
通过参数方程计算弧形上的点,然后用直线连接这些点来近似弧形。
function drawArc(ctx, cx, cy, radius, startAngle, endAngle) {
const points = [];
for (let angle = startAngle; angle <= endAngle; angle += 0.1) {
const x = cx + radius * Math.cos(angle);
const y = cy + radius * Math.sin(angle);
points.push({x, y});
}
ctx.beginPath();
ctx.moveTo(points[0].x, points[0].y);
for (let i = 1; i < points.length; i++) {
ctx.lineTo(points[i].x, points[i].y);
}
ctx.stroke();
}
这种方法提供了最大的灵活性,可以创建任意形状的曲线。
使用第三方库
D3.js等库提供了高级的弧形绘制功能,适合数据可视化等复杂场景。
const arcGenerator = d3.arc()
.innerRadius(40)
.outerRadius(80)
.startAngle(0)
.endAngle(Math.PI/2);
const arcPath = arcGenerator();
这些库通常封装了底层绘图细节,提供更简洁的API。






