try this
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="Author" CONTENT="emu(ston)">
<META NAME="Keywords" CONTENT="javascript,chart">
<title>emu's paint without vlm</title>
</head>
<body>
<button onclick="testNewPie()">画饼图</button>
<div id=canvas></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
var div1 = document.getElementById("canvas")
function testNewPie(){
div1.innerHTML = newPie(300,300,150,0,45,"red")+newPie(300,300,150,45,110,"blue")+newPie(300,300,150,110,250,"yellow")+newPie(300,300,150,250,360,"green");
}
function newPie(x0,y0,radius,startAngle,endAngle,color){
startAngle = startAngle/360*Math.PI*2;
endAngle = endAngle/360*Math.PI*2;
points = [];
// get arc points
var step = 1/radius;
for (var i=startAngle;i<endAngle;i+=step){
var dx = parseInt(Math.sin(i)*radius+x0);
var dy = parseInt(Math.cos(i)*radius+y0);
points[points.length]=[dx,dy];
}
// get radius points
var startx=Math.sin(startAngle)*radius+x0;
var starty=Math.cos(startAngle)*radius+y0;
var lx = startx-x0;
var ly = starty-y0;
var l = Math.sqrt(lx*lx+ly*ly)
for (var i=0;i<l;i+=1)
{
var p = i/l;
var px = parseInt(x0 + lx*p);
var py = parseInt(y0 + ly*p);
points[points.length] = [px,py]
}
var startx=Math.sin(endAngle)*radius+x0;
var starty=Math.cos(endAngle)*radius+y0;
var lx = startx-x0;
var ly = starty-y0;
var l = Math.sqrt(lx*lx+ly*ly)
for (var i=0;i<l;i+=1)
{
var p = i/l;
var px = parseInt(x0 + lx*p);
var py = parseInt(y0 + ly*p);
points[points.length] = [px,py]
}
points = points.sort(compareByCol1);
// calculate lines
var lines = [];
lines[0] = [points[0],points[0]];
for (var i=1;i<points.length;i++) {
var p0 = points[i];
var p1= lines[lines.length-1][0];//left point
var p2= lines[lines.length-1][1];//right point
if (p0[1]>p1[1]){
lines[lines.length] = [p0,p0]; // new line
}else if (p0[0]<p1[0]){ // new left point of the same line
lines[lines.length-1][0] = p0;
}else if (p0[0]>p2[0]){ // new right point of the same line
lines[lines.length-1][1] = p0;
}
}
rs = [];
for (var i=lines.length-1;i>-1;i--)
rs[i] = "<span style='top:"+lines[i][0][1]+";left:"+lines[i][0][0]+";height:1;width:"+(lines[i][1][0]-lines[i][0][0]+1)+";position:absolute;font-size:1px;background-color:"+color+"'></span>";
return rs.join("");
}
function compareByCol1(a,b){
return a[1]-b[1];
}
//-->
</SCRIPT>
</body>
</html>
呵呵,用纯script也能实现画饼图,没见过吧?