js canvas绘制芝麻信用仪表盘及雷达图效果代码
代码语言:html
所属分类:图表
代码描述:js canvas绘制芝麻信用仪表盘及雷达图效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit">
<script>
var Radar = (function(){
var options = {
styles: {
offset: {
top: 15,
left: 0
},
border: {
width: 2,
color: '#2EC8CA'
},
splitLine: {
color: '#ccc'
},
title: {
font: 'bold 52px Microsoft YaHei',
color: '#F56948'
},
valueRange: {
border: {
width: 4,
color: '#FF0101'
},
background: '#F56948',
arrow: 2
},
inner: {
radius: 70,
background: '#fff'
},
label: {
image: '',
font: '16px Microsoft YaHei',
color: '#666'
}
}
};
var element,
styles,
borderStyle,
splitLineStyle,
titleStyle,
valueRangeStyle,
innerStyle,
labelStyle;
var extend = function(obj1, obj2){
for(var k in obj2) {
if(obj1.hasOwnProperty(k) && typeof obj1[k] == 'object') {
extend(obj1[k], obj2[k]);
} else {
obj1[k] = obj2[k];
}
}
}
var calcLocation = function(cp, r, end){
return {
x: cp[0] + r * Math.cos(Math.PI * end),
y: cp[1] + r * Math.sin(Math.PI * end)
};
}
var drawLine = function(line) {
var lines = line.lines;
context.beginPath();
context.moveTo(lines[0].x, lines[0].y);
for(var i = 1; i < lines.length; i++){
context.lineTo(lines[i].x, lines[i].y);
}
context.closePath();
if(line.style) {
context.strokeStyle = line.style;
context.lineWidth = line.width || 1;
context.stroke();
}
if(line.fill) {
context.fillStyle = line.fill;
context.fill();
}
}
var fillText = function(opts){
context.font = opts.font;
context.fillStyle = opts.color;
context.textAlign = opts.align || 'center';
context.textBaseline = opts.vertical || 'middle';
context.moveTo(opts.x, opts.y);
context.fillText(opts.text, opts.x, opts.y);
}
var drawIcon = function(borderLoc, polar) {
var img = new Image();
img.src = labelStyle.image;
img.onload = function(){
for(var n = 0; n < borderLoc.length; n++){
var text = polar[n].text,
icon = polar[n].icon,
loc = borderLoc[n],
x = loc.x + icon.l,
y = loc.y + icon.t;
context.drawImage(img, icon.sx, icon.sy, icon.w, icon.h, x, y, icon.w, icon.h);
fillText({
font: labelStyle.font,
color: labelStyle.color,
text: text,
x: x + icon.w/2,
y: y + icon.h + 10
});
}
}
}
var drawInner = function(cp, valueRangeLoc, borderLoc, innerLoc, valueSum) {
drawLine({
lines: borderLoc,
style: borderStyle.color,
width: borderStyle.width
});
drawLine({
lines: valueRangeLoc,
style: valueRangeStyle.border.color,
width: valueRangeStyle.border.width,
fill: valueRangeStyle.background
});
for(var j = 0; j < borderLoc.length; j++){
drawLine({
lines: [{x: cp[0], y: cp[1]}, borderLoc[j]],
style: splitLineStyle.color
});
}
drawLine({
lines: innerLoc,
fill: innerStyle.background
});
fillText({
font: titleStyle.font,
color: titleStyle.color,
text: options.title.replace('{v}', valueSum),
x: cp[0],
y: cp[1]
});
for (var k = valueRangeLoc.length - 1; k >= 0; k--) {
var x = valueRangeLoc[k].x,
y = valueRangeLoc[k].y;
con.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0