php虚线园的代码,canvas画虚线圆

这篇博客展示了如何利用HTML和JavaScript实现一个简单的占比统计图形。首先建立HTML布局,然后通过JavaScript创建并操作canvas元素,绘制内圆、虚线圆环和外圆环。接着,根据数据渲染占比部分,每个扇形代表一个数据项的占比,颜色各异。该教程适合前端开发者学习canvas和图形渲染。
摘要由CSDN通过智能技术生成

本文要实现的图形

bVFVJg?w=121&h=122

一个简单的占比统计。。

实现的方案是html js合成

首先是简单的HTML布局

statistics

.zh-chart {

width: 100px;

height: 100px;

background: #142838;

}

然后通过js来实现我们的最终效果,相应的操作都有注释。

var chartEle = $('.zh-chart');

var canvas = document.createElement('canvas');

canvas.width = chartEle.width();

canvas.height = chartEle.height();

var radius = canvas.width/2;

chartEle.append(canvas);

var ctx = canvas.getContext('2d');

// 内圆

ctx.arc(radius, radius, radius*2/3, 0, 2*Math.PI);

ctx.fillStyle="rgba(22,196,203,0.1)";

ctx.fill();

ctx.strokeStyle = '#16C4CB';

ctx.stroke();

// 虚线圆环

ctx.translate(radius, radius); // 改变旋转中心

ctx.beginPath();

ctx.arc(0, 0, radius*2/3+4, 0, Math.PI/30);

ctx.strokeStyle = '#16C4CB';

ctx.stroke();

ctx.closePath();

for(var i=0; i<40; i++) {

ctx.beginPath();

ctx.rotate(10*Math.PI/180);

ctx.arc(0, 0, radius*2/3+4, 0, Math.PI/30);

ctx.strokeStyle = '#16C4CB';

ctx.stroke();

ctx.closePath();

}

// 外圆环

ctx.beginPath();

ctx.arc(0, 0, radius-4, 0, 2*Math.PI);

ctx.strokeStyle = '#16C4CB';

ctx.stroke();

ctx.closePath();

// 数据渲染

var data = [

{val: chartEle.data('b'), color: '#AF4A6F'},

{val: chartEle.data('c'), color: '#16C4CB'},

{val: chartEle.data('d'), color: '#887BD0'},

{val: chartEle.data('e'), color: '#19B478'},

{val: chartEle.data('f'), color: '#DE725A'}

];

// ctx.rotate(100*Math.PI/180);

for(var j=0; j<5; j++) {

var rate = data[j].val.split('/');

ctx.beginPath();

ctx.rotate(72*Math.PI/180);

ctx.arc(0, 0, radius-4, 0, (2*Math.PI)/5*(rate[0]/rate[1]));

ctx.strokeStyle = data[j].color;

ctx.lineWidth = 5;

ctx.stroke();

ctx.closePath();

}

感觉关注~~~~ 啦啦啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值