html 环形图圆角,用canvas画一个进度条为圆角的环形图(圆环图)

之前用css画了环形图,但是进度条不能为圆角,和设计图有一点点不一样。现在有点时间,打算用canvas画个圆角的环形图。

在用canvas画环形图的时候,思考比较久的是进度条百分比这一块。

关键点是知道Math.PI 返回的是什么。PI就是圆周率π,PI是弧度制的π,也就是180°。所以,Math.PI ≈ 3.14 = 180°

把下面的PI换成180°,一切就很简单了。(一开始没反应过来竟是小学内容。。。犹豫了一下才反应过来)

e0fe05210134?from=groupmessage

e0fe05210134?from=groupmessage

效果图

import React, { useEffect } from "react";

import ReactDOM from "react-dom";

//百分比

let percent=0.7;

function App() {

useEffect(() => {

const ctx = document.getElementById("myCanvas").getContext("2d");

//外圆环

ctx.beginPath();

ctx.arc(100, 100, 50, 0, 2 * Math.PI);

ctx.strokeStyle = "#fff";

ctx.fillStyle = "#EDEDED";

ctx.fill();

ctx.stroke();

//内圆环

ctx.beginPath();

ctx.arc(100, 100, 40, 0, 2 * Math.PI);

ctx.strokeStyle = "#fff";

ctx.fillStyle = "#fff";

ctx.fill();

ctx.stroke();

//环形图的进度条

ctx.beginPath();

ctx.arc( 100,100, 44, -Math.PI / 2,-Math.PI / 2 + percent * (Math.PI * 2),false);

ctx.lineWidth = 8;

ctx.lineCap = "round";

ctx.strokeStyle = "rgb(255, 127, 105)";

ctx.stroke();

});

return (

);

}

const rootElement = document.getElementById("root");

ReactDOM.render(, rootElement);

上面的代码,我在谷歌上运行,和在codesandbox中运行的结果不太一样。

发现在谷歌上运行的时候,画外圆环和内圆环的线条宽度受到了画进度条时设置的lineWidth线条宽度的影响。所以在画外圆环和内圆环时,加一行ctx.lineWidth = 1的代码就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值