作者:梁伟盛
据说本贵族圈每月不分享就邀请雪糕。所以分享下一个简单的Canvas插件,Canvas元素是HTML5的一部分,允许脚本语言动态渲染位图像,你可以使用javascript用它来绘制图形、图标、以及其它任何视觉性图像。它也可用于创建图片特效和动画(反正就是好东西)。
既然是HTML5的特性,那必须是只有支持HTML5的浏览器才能使用,兼容性如下图:
定义:开始一条路径,或重置当前的路径。
context.beginPath();
定义:创建弧/曲线(用于创建圆或部分圆)。
context.arc(x, y , r, sAngle, eAngle, counterclockwise);
定义:绘制当前路径的边框
context.stroke()
context.measureText(text).width;
定义:返回包含一个对象,该对象包含以像素计的指定字体宽度。
定义:在画布上绘制填色的文本
context.fillText(text, x, y, maxWidth);
定义:清空给定矩形内的指定像素。
context.clearRect(x, y, width, height);
了解了以上API后,我们就可以动手干活了,其实很简单。实现只有3个步骤。
context.beginPath();
//设置透明度,样式与线条宽度
this.extend(context, {
globalAlpha: inSideCircle.alpha,
strokeStyle: inSideCircle.style,
lineWidth: inSideCircle.lineWidth
})
//绘制圆
context.arc(this.hElWidth, this.hElHeight, option.radius + outSideCircle.lineWidth - inSideCircle.lineWidth, 0, pi * 2, false);
//画出圆形
context.stroke();
context.beginPath();
//设置透明度,样式与线条宽度
this.extend(context, {
globalAlpha: outSideCircle.alpha,
strokeStyle: outSideCircle.style,
lineWidth: outSideCircle.lineWidth
})
//根据当前进度绘制圆
context.arc(this.hElWidth, this.hElHeight, option.radius, -(pi / 2), pi * 2 / 100 * (n - 25), false);
//画出圆形
context.stroke();
context.beginPath();
this.extend(context, {
font: textObj.font,
fillStyle: textObj.style,
globalAlpha: textObj.alpha
})
//得出数值宽度
numberWidth = context.measureText(number).width;
context.fillText(number, this.hElWidth - numberWidth / 2, this.hElHeight + 10 / 3)
//清除canvas内容
this.context.clearRect(0, 0, this.elWidth, this.elHeight);
this._drawCircle(n);
this._drawText(n);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
<meta content="yes"name="apple-mobile-web-app-capable"/>
<meta content="black"name="apple-mobile-web-app-status-bar-style"/>
<meta name="format-detection"content="telphone=no"/>
<title>canvasProgress</title>
</head>
<body>
<canvas id="canvasEl" style="background-color:#000" height="100px" width="100px"></canvas>
</body>
<script type="text/javascript" src="progress.js"></script>
<script type="text/javascript">
var progress = new Progress({element: document.getElementById('canvasEl')})
var n = 0;
var timer = setInterval(function() {
if (n++ !== 100) {
progress.setProgress(n);
} else {
clearInterval(timer);
}
}, 100)
</script>
</html>
背景与进度颜色根据喜好变换
今天分享就到此位置了,有兴趣的可以去github看下代码。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。