使用canvas绘制圆形进度条
实现步骤:
- 绘制一个圆;
- 绘制圆环;
- 绘制进度环;
- 绘制文字;
一、创建画布
<canvas id='myCanvas' width='200' height='200'></canvas>
复制代码
二、绘制一个圆
var canvas = document.getElementById('myCanvas1');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI, false);
ctx.strokeStyle = 'red';
ctx.stroke();
复制代码
三、绘制圆环:
var canvas = document.getElementById('myCanvas1');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI, false);// new added
ctx.lineWidth = 15;ctx.strokeStyle = 'red';
ctx.stroke();
复制代码
四、绘制进度环
var canvas = document.getElementById('myCanvas1');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI, false);
ctx.lineWidth = 15;
ctx.strokeStyle = 'red';
ctx.stroke();//new added
var startAngle = 3 / 2 * Math.PI; //开始位置弧度
var percentage = 10; //完成进度值
var diffAngle = percentage / 100 * Math.PI * 2; //完成进度弧度值
ctx.beginPath();
ctx.arc(100, 100, 50, startAngle, diffAngle + startAngle, false);
ctx.strokeStyle = 'green';
ctx.stroke();
复制代码
五、绘制文字
var canvas = document.getElementById('myCanvas1');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 100, 50, 0, 2 * Math.PI, false);
ctx.lineWidth = 15;
ctx.strokeStyle = 'red';
ctx.stroke();var startAngle = 3 / 2 * Math.PI; //开始位置弧度
var percentage = 10; //完成进度值
var diffAngle = percentage / 100 * Math.PI * 2; //完成进度弧度值
ctx.beginPath();
ctx.arc(100, 100, 50, startAngle, diffAngle + startAngle, false);
ctx.strokeStyle = 'green';
ctx.stroke();//new added
ctx.fillStyle = '#000';
ctx.textAlign = 'center';
ctx.font = '16px serif';
ctx.fillText(percentage + '%', 100+2, 100+5);
复制代码
六、完整代码
(function (root, factory) {if (typeof define === 'function' && define.amd) {define(factory);// AMD} else if (typeof exports === 'object' && typeof module !== 'undefined') {module.exports = factory(); // CommonJS} else {window.Progressbar = factory(); // Browser globals}
}(this, function () {function Progressbar(options){this.id = options.id;this.value = options.value || 0;this.width = options.width || 200;this.height = options.height || 200;this.bgColor = options.bgColor || 'green';this.barColor = options.barColor || 'red';this.fontColor = options.fontColor || '#000';if(options.init){this.init();}}Progressbar.prototype.init = function(){var canvas = document.getElementById(this.id);if(!canvas.getContext) {throw new Error('your browser does not support canvas')}if(!this.id){throw new Error('your need pass id ')}var width = parseInt(this.width);var height = parseInt(this.height);canvas.setAttribute('width',width);canvas.setAttribute('height',height);var ctx = canvas.getContext("2d");var startAngle = 3 / 2 * Math.PI;var percentage = 0;var diffAngle = 0;var cx = width / 2;var cy = height / 2;var timer = setInterval(draw, 50);var value = this.value;var bgColor = this.bgColor;var barColor = this.barColor;var fontColor = this.fontColor;function draw(){diffAngle = (percentage / 100) * Math.PI * 2;//清除矩形区域ctx.clearRect(0, 0, width, height);ctx.beginPath();//设置线段宽度ctx.lineWidth = 15;//绘制圆ctx.arc(cx, cy, 50, 0, 2 * Math.PI, false);//设置填充色ctx.fillStyle = '#FFF';ctx.fill();//绘制图形轮廓ctx.strokeStyle = bgColor; ctx.stroke();//绘制百分比进度ctx.beginPath();ctx.arc(cx, cy, 50, startAngle, diffAngle + startAngle, false);ctx.strokeStyle = barColor;ctx.stroke();//绘制百分比文字ctx.fillStyle = fontColor;ctx.textAlign = 'center';ctx.font = '16px serif';ctx.fillText(percentage + '%', cx, cy + 6);if (percentage >= value) {clearTimeout(timer);}percentage++;}}return Progressbar;
}));var progressbar1 = new Progressbar({ id: 'myCanvas1',value: 20 ,init: true })
var progressbar2 = new Progressbar({ id: 'myCanvas2',value: 30 ,init: true })
复制代码
查看效果 进度条
参考资料 使用canvas来绘制图形
原文
转载于:https://juejin.im/post/5abb7e196fb9a028d700a87e
使用canvas绘制圆形进度条相关推荐
- canvas 绘制圆形进度条
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- android绘制环形进度_Android使用Canvas绘制圆形进度条效果
前言 Android自定义控件经常会用到Canvas绘制2D图形,在优化自己自定义控件技能之前,必须熟练掌握Canvas绘图机制.本文从以下三个方面对Canvas绘图机制进行讲解: 画布Canvas ...
- 使用h5 canvas绘制圆形进度条
创建一个Html容器canvas: <canvas id="myCanvasTag" width="300" height="300" ...
- H5 Canvas绘制圆形进度条动画效果
效果如图 效果比较简单 html结构部分 <canvas id="canvas" width="110" height="110"&g ...
- 精通Android自定义View(十二)绘制圆形进度条
1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...
- Android 绘制圆形进度条
Android 绘制圆形进度条 最近项目上有一些需求,需要绘制圆形的进度条满足设计上和交互上的需求: 实现思路 在画布上直接绘制View,需要了解一下几点 1.需要画一个圆 2.圆圈上有不同进度的颜色 ...
- 使用canvas绘制圆环进度条
使用canvas绘制圆环进度条 技术要求 需要一点点数学基础 需要对 canvas 的常见的方法熟悉 一点点数学基础 已知圆心,半径,角度,求圆上的点坐标 canvas 常见的方法 菜鸟教程 扬帆起航 ...
- html数字显示百分比,扣丁学堂html5 教程之Canvas实现圆形进度条并显示数字百分比效果...
今天扣丁学堂html5培训小编和大家分享一下Canvas实现圆形进度条并显示数字百分比效果示例,对html5感兴趣的小伙伴或者是参加学习的小伙伴可以了解一下. Canvas实现圆形进度条并显示数字百分 ...
- html5 canvas绘制圆形进度实例
2019独角兽企业重金招聘Python工程师标准>>> html5 canvas绘制圆形进度实例 <canvas id="test" width=200 h ...
最新文章
- [svc]arp协议的细枝末节
- 查找只有一个字母不相同的单词
- js阻止ajax继续请求,js 拦截全局 ajax 请求
- spring + redis 实现数据的缓存
- messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox
- AI取代人类?这4种工作仍将是从业者的“铁饭碗” | 未来
- 数据库MySQL基础---事务相关特性--连接池DBCP--C3P0--JavaBean--DBUtils工具
- 用 C# 做人脸检测(基于EmguCV)
- origin matlab调用,origin与matlab使用教程
- 好的大创计算机类课题,大学大创课题有哪些
- python支持多种编程范式吗_理解真格量化的Python编程范式
- Carry On My Wayward Son -- Kansas
- 参数问题:nested exception is java.lang.NumberFormatException: For input string: “null“,已解决。
- HDU 4093 Xavier is Learning to Count FFT + 容斥原理 2011年上海现场赛C题
- 一位优秀的学弟,计算机2019保研经历分享(北大信科、清华计算机系)
- 华三路由引入配置实验
- Selenium自动化测试代理问题
- Tunnel命令操作
- epoch和iteration的区别
- Leetcode-545. Boundary of Binary Tree