All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
利用GridView显示主细表并一次编辑明细表所有数据的例子_[Asp.Net教程]
使用SQLSERVER的扩展存储过程实现远程备份与恢复_[SQL Server教程]
Asp.net中防止用户多次登录的方法_[Asp.Net教程]
用AJAX编写用户注册时的应用实例_.net资料_编程技术
C#中ImageAnimator类功能和方法
如何在IE右键菜单中添加菜单项以及如何添加IE任务栏按钮_.net资料_编程技术
C#教程:C#中的关系运算符
javascript事件列表_JavaScript技术_编程技术
ADO.NET链接数据库DataSet对象应用实例
ASP.NET中MD5和SHA1加密的几种方法_.net资料_编程技术
Reading number is top 10 pictures
Abdominal hit by iron--HangZhou best driver parking save passengers
西游日记1
Soldier saw beauty after the reaction
NeedWallpaper9
So beauty, will let you spray blood8
关于提肛的健身效果
30 beautiful school beauty5
30 beautiful school beauty3
到底是谁撞谁呀?
The Soviet union swimsuit exposure in the 70 year2
Download software ranking
Ashlynn Video5
Eclipse-CALMSANNY (second edition)
网页特效实例大全
Sora aoi's film--cangkong_Blue.Sky
美女写真1
VC++6.0培训教程
I'm come from Beijing1
Red cliff
Unix video tutorial8
I for your crazy
归海一刀 published in(发表于) 2014/2/10 6:54:49 Edit(编辑)
用PHP打造超酷的数据饼图_[PHP教程]

用PHP打造超酷的数据饼图_[PHP教程]

用PHP打造超酷的数据饼图_[PHP教程]


源代码:




//+------------------------+


//| pie3dfun.PHP//公用函数 |


//+------------------------+



define("ANGLE_STEP", 5); //定义画椭圆弧时的角度步长



function draw_getdarkcolor(img,clr) //求clr对应的暗色


{


rgb = imagecolorsforindex(img,clr);


return array(rgb["red"]/2,rgb["green"]/2,rgb["blue"]/2);


}



function draw_getexy(a, b, d) //求角度d对应的椭圆上的点坐标


{


d = deg2rad(d);


return array(round(a*Cos(d)), round(b*Sin(d)));


}



function draw_arc(img,ox,oy,a,b,sd,ed,clr) //椭圆弧函数


{


n = ceil((ed-sd)/ANGLE_STEP);


d = sd;


list(x0,y0) = draw_getexy(a,b,d);


for(i=0; i

{


d = (d+ANGLE_STEP)>ed?ed:(d+ANGLE_STEP);


list(x, y) = draw_getexy(a, b, d);


imageline(img, x0+ox, y0+oy, x+ox, y+oy, clr);


x0 = x;


y0 = y;


}


}



function draw_sector(img, ox, oy, a, b, sd, ed, clr) //画扇面


{


n = ceil((ed-sd)/ANGLE_STEP);


d = sd;


list(x0,y0) = draw_getexy(a, b, d);


imageline(img, x0+ox, y0+oy, ox, oy, clr);


for(i=0; i

{


d = (d+ANGLE_STEP)>ed?ed:(d+ANGLE_STEP);


list(x, y) = draw_getexy(a, b, d);


imageline(img, x0+ox, y0+oy, x+ox, y+oy, clr);


x0 = x;


y0 = y;


}


imageline(img, x0+ox, y0+oy, ox, oy, clr);


list(x, y) = draw_getexy(a/2, b/2, (d+sd)/2);


imagefill(img, x+ox, y+oy, clr);


}



function draw_sector3d(img, ox, oy, a, b, v, sd, ed, clr) //3d扇面


{


draw_sector(img, ox, oy, a, b, sd, ed, clr);


if(sd<180)


{


list(R, G, B) = draw_getdarkcolor(img, clr);


clr=imagecolorallocate(img, R, G, B);


if(ed>180) ed = 180;


list(sx, sy) = draw_getexy(a,b,sd);


sx += ox;


sy += oy;


list(ex, ey) = draw_getexy(a, b, ed);


ex += ox;


ey += oy;


imageline(img, sx, sy, sx, sy+v, clr);


imageline(img, ex, ey, ex, ey+v, clr);


draw_arc(img, ox, oy+v, a, b, sd, ed, clr);


list(sx, sy) = draw_getexy(a, b, (sd+ed)/2);


sy += oy+v/2;


sx += ox;


imagefill(img, sx, sy, clr);


}


}


function draw_getindexcolor(img, clr) //RBG转索引色


{


R = (clr>>16) & 0xff;


G = (clr>>8)& 0xff;


B = (clr) & 0xff;


return imagecolorallocate(img, R, G, B);


}



// 绘图主函数,并输出图片


// datLst 为数据数组, datLst 为标签数组, datLst 为颜色数组


// 以上三个数组的维数应该相等


function draw_img(datLst,labLst,clrLst,a=250,b=120,v=20,font=10)


{


ox = 5+a;


oy = 5+b;


fw = imagefontwidth(font);


fh = imagefontheight(font);



n = count(datLst);//数据项个数



w = 10+a*2;


h = 10+b*2+v+(fh+2)*n;



img = imagecreate(w, h);



//转RGB为索引色


for(i=0; i

clrLst[i] = draw_getindexcolor(img,clrLst[i]);



clrbk = imagecolorallocate(img, 0xff, 0xff, 0xff);


clrt = imagecolorallocate(img, 0x00, 0x00, 0x00);



//填充背景色


imagefill(img, 0, 0, clrbk);



//求和


tot = 0;


for(i=0; i

tot += datLst[i];


sd = 0;


ed = 0; 333


ly = 10+b*2+v;


for(i=0; i

{


sd = ed;


ed += datLst[i]/tot*360;



//画圆饼


draw_sector3d(img, ox, oy, a, b, v, sd, ed, clrLst[i]); //sd,ed,clrLst[i]);



//画标签


imagefilledrectangle(img, 5, ly, 5+fw, ly+fh, clrLst[i]);


imagerectangle(img, 5, ly, 5+fw, ly+fh, clrt);


//imagestring(img, font, 5+2*fw, ly, labLst[i].":".datLst[i]."(".(round(10000*(datLst[i]/tot))/100)."%)", clrt);



str = iconv("GB2312", "UTF-8", labLst[i]);


ImageTTFText(img, font, 0, 5+2*fw, ly+13, clrt, "./simsun.ttf", str.":".datLst[i]."(".(round(10000*(datLst[i]/tot))/100)."%)");


ly += fh+2;


}



//输出图形


header("Content-type: image/png");



//输出生成的图片


imgFileName = "../temp/".time().".png";


imagepng(img,imgFileName);


echo '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


}



datLst = array(30, 10, 20, 20, 10, 20, 10, 20); //数据


labLst = array("中国科技大学", "安徽理工大学", "清华大学", "北京大学", "南京大学", "上海大学", "河海大学", "中山大学"); //标签


clrLst = array(0x99ff00, 0xff6666, 0x0099ff, 0xff99ff, 0xffff99, 0x99ffff, 0xff3333, 0x009999);



//画图


draw_img(datLst,labLst,clrLst);


?>


来源:网络







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.