首页 > 其他分享 >使用canvas制作一个圆形进度条

使用canvas制作一个圆形进度条

时间:2024-12-22 09:21:51浏览次数:4  
标签:canvas const 进度条 ctx 圆形 radius centerX

制作一个圆形进度条使用HTML5的<canvas>元素是一个很好的选择。以下是一个简单的示例,展示了如何使用<canvas>来创建一个圆形进度条:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>圆形进度条</title>
    <style>
        canvas {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <canvas id="progressCanvas" width="200" height="200"></canvas>
    <script>
        const canvas = document.getElementById('progressCanvas');
        const ctx = canvas.getContext('2d');
        const centerX = canvas.width / 2;
        const centerY = canvas.height / 2;
        const radius = 70;
        let progress = 0.75; // 进度,范围从0到1,表示0%到100%

        function drawCircle(ctx, centerX, centerY, radius, startAngle, endAngle, color) {
            ctx.beginPath();
            ctx.arc(centerX, centerY, radius, startAngle, endAngle, false);
            ctx.lineWidth = 10;
            ctx.strokeStyle = color;
            ctx.stroke();
        }

        function drawProgress() {
            // 清除画布
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            
            // 绘制灰色背景圆
            drawCircle(ctx, centerX, centerY, radius, 0, Math.PI * 2, '#eee');
            
            // 根据进度绘制蓝色进度圆
            let endAngle = progress * Math.PI * 2;
            drawCircle(ctx, centerX, centerY, radius, 0, endAngle, 'blue');
        }

        drawProgress(); // 初始绘制
    </script>
</body>
</html>

这个示例中,我们首先定义了一个<canvas>元素,并在JavaScript中获取其上下文。然后,我们定义了一个drawCircle函数来绘制圆弧,以及一个drawProgress函数来根据当前的进度值绘制进度条。在drawProgress函数中,我们首先清除画布,然后绘制一个灰色的背景圆,接着根据进度值绘制一个蓝色的圆弧来表示进度。你可以通过改变progress变量的值来改变进度条的进度。

标签:canvas,const,进度条,ctx,圆形,radius,centerX
From: https://www.cnblogs.com/ai888/p/18621724

相关文章

  • 使用Canvas制作一个火焰跟随鼠标的动画
    创建一个火焰跟随鼠标的动画涉及到多个步骤,包括创建canvas元素,监听鼠标事件,以及在canvas上绘制火焰。以下是一个基本的实现方式:首先,在HTML中添加一个canvas元素:<!DOCTYPEhtml><html><head><title>火焰跟随鼠标动画</title><style>body{margin:0;}......
  • 使用Canvas画出头发飘逸的动画
    创建一个头发飘逸的动画需要一定的设计能力和动画技巧。下面我会给出一个简单的步骤来在HTML5的<canvas>元素上创建一个飘逸的头发的动画。步骤1:设置HTML和Canvas首先,你需要在HTML中创建一个<canvas>元素。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-......
  • 40.在 Vue3 中使用 OpenLayers 实现 canvas 遮罩效果
    一、引言在Vue3前端开发与地图应用结合的场景中,OpenLayers作为强大的地图库,为我们带来了丰富多样的功能拓展可能性。今天,我们将深入探讨如何利用OpenLayers在Vue3项目里巧妙地实现canvas遮罩效果,这一技巧能够为地图应用增添独特的交互体验与视觉呈现,无论是突出特定区......
  • 前端 PDF 生成和分页的最佳实践:利用 `jspdf` 和 `html2canvas` 从基础到高级技巧
    前端PDF生成和分页的最佳实践:利用jspdf和html2canvas从基础到高级技巧标签:PDF生成、分页处理、前端开发、jspdf、html2canvas引言在实际开发中,很多场景都会涉及PDF的生成,比如合同生成、内容导出等等。我遇到的一个实际问题是,在项目中需要将合同内容生成PDF,合......
  • 【Canvas与艺术】红色3号桌球
    【注】此图立体感还差点,以后改进吧。【成图】120*120的png图标:大小图:【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>3号球Draft3......
  • 【Canvas与仪表盘】铝圈蓝底汽车速度仪表盘(可用键盘按键调节速度值)
    【速度调节方法】W或上箭头加速,S或下箭头减速。【成图】120*120的png图标大小图:【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>铝圈蓝底汽......
  • vue-canvas-创建矩形框对指定区域的点数据进行坐标变换
    demo简介读取两个csv文件(geo数据和drawing数据)绘制散点图使用矩形框选中范围内的数据(只选中drawing数据)拖动矩形框或reshape矩形框,同时,矩形框内的数据点坐标也相应变换核心代码介绍1template设置了工具栏和画布作为两个核心组件工具栏包含”绘制矩形框”,“删除矩......
  • WCF实现进度条
    1.WcfServiceLibrary:包含WCF服务接口的定义(`IProgressService.cs`)和实现(`ProgressService.cs`)。2.ProgressServiceUI:包含进度条窗口的实现,该窗口作为WCF服务运行。3.ProgressClient:Windows窗体应用程序,作为WCF服务的客户端。以下是完整的项目结构:```Solution│......
  • opencv Hough圆检测实现圆形表计在画面中位置的检测
    前言提醒:文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。文章目录前言代码与运行结果Hough检测相关知识H......
  • ecahrts双向渐变进度条从宽到窄【vue3】
    效果如图:父组件1.html代码<!--进度条组件--><ProgressBarclass="progress-bar"idEcharts="progress-bar-chart":chartsData="progressBarChartData"></ProgressBar>2.js代码//引入组件importProgressBarfrom......