创建PHP数据饼酷效果代码

设计素描:
源代码:
{代码}
<
/ / + ------------------------ +
/ / / | pie3dfun。PHP /公共功能|
/ / + ------------------------ +
定义(angle_step,5); / /定义椭圆弧角步
功能draw_getdarkcolor(IMG美元美元,CLR) / / $ CLR为相应的黑暗
{
取得某索引的颜色(RGB =美元美元美元IMG,CLR);
返回数组(红2,2,2;
}
功能draw_getexy($,$,$)和$ / /椭圆上对应点
{
a deg2rad美元($);
返回数组(圆($ * COS($ D)),圆($ * *($ D)));
}
功能draw_arc(美元美元美元公司IMG,牛,,$,$,$,$ $ SD,CLR) / /椭圆函数
{
$ N =细胞(($ - $ SD) / angle_step);
美元= SD;
列表($ x0,y0美元)= draw_getexy($,$,$);
($ i = 0;$ i $ n;$ + +)
{
美元D =($ + angle_step)>美元美元(ED ED:美元D + angle_step);
列表(X,Y元)= draw_getexy($,$,$);
imageline($ IMG,x0 +美元美元美元美元牛式公司,X + Y +牛美元,美元美元美元公司,CLR);
$ x0 = X元;
$ y0 = Y元;
}
}
功能draw_sector(美元美元美元公司IMG,牛,,$,$,$,$ $ SD,CLR) / /扇画
{
$ N =细胞(($ - $ SD) / angle_step);
美元= SD;
列表($ x0,y0美元)= draw_getexy($,$,$);
imageline($ IMG,x0 +美元美元美元美元牛式公司,为牛、为公司、为CLR);
($ i = 0;$ i $ n;$ + +)
{
美元D =($ + angle_step)>美元美元(ED ED:美元D + angle_step);
列表(X,Y元)= draw_getexy($,$,$);
imageline($ IMG,x0 +美元美元美元美元牛式公司,X + Y +牛美元,美元美元美元公司,CLR);
$ x0 = X元;
$ y0 = Y元;
}
imageline($ IMG,x0 +美元美元美元美元牛式公司,为牛、为公司、为CLR);
列表(X,Y元)= draw_getexy($ / 2,$ / 2,($ + $ SD) / 2);
imagefill($ IMG,X + Y +牛美元,美元美元美元公司,CLR);
}
功能draw_sector3d(美元美元美元公司IMG,牛,,$,$,$ V,美元美元美元的SD,ED,CLR) / /三维风扇
{
draw_sector(美元美元美元公司IMG,牛,,$,$,$,$ $ SD,CLR);
如果(SD $ < 180)
{
列表($,$ G,B = draw_getdarkcolor(美元)美元美元IMG,CLR);
CLR = imagecolorallocate美元(美元美元美元IMG,R,G,B美元);
如果(180美元)180美元;
列表($美元SX,SY)= draw_getexy($,$,$ SD);
SX =美元美元的牛;
美元=;
列表(元前,$ EY)= draw_getexy($,$,$ ED);
美元=牛;
美元=美元;
imageline(IMG美元,美元美元美元的SX,SY,SX,SY美元美元美元+ V,CLR);
imageline(IMG美元,美元美元美元前,EY,EY前,美元美元美元+ V,CLR);
draw_arc(美元美元美元IMG,牛,公司+ $ V,$,$,$,$ $ SD,CLR);
列表($美元SX,SY)= draw_getexy($,$,($ SD + $ ED) / 2);
2美元;
SX =美元美元的牛;
imagefill(IMG美元,美元美元美元的SX,SY,CLR);
}
}
功能draw_getindexcolor(IMG美元美元,CLR) / / RBG把索引颜色
{
r =($ CLR > > 16)0xff;
$ G =($ CLR > > 8)0xff;
$ =($ CLR)0xff;
返回imagecolorallocate(美元美元美元IMG,R,G,B美元);
}
绘图/ main函数和输出。
datlst美元 / /数据阵列,datlst美元美元的颜色datlst标签阵列,阵列
超过三个数组/维度应该相等。
功能draw_img(datlst美元,lablst美元,clrlst美元,美元= 250,B = 120美元美元,V = 20,字体= 10美元)
{
美元= 5 +美元;
美元= 5 +美元;
$ FW =取得字体宽度($字体);
$ FH =取得字体高度(合字);
$ N =计数($ datlst); / /数据项的数目
$ = 10 + $ A * 2;
$ H = 10 + $ B * 2 + $ +($ FH + 2)* N;
$ img =画面欣赏($ W $ H);
切换到索引颜色
($ i = 0;$ i $ n;$ + +)
clrlst美元{ $我} = draw_getindexcolor(IMG clrlst美元美元美元,{我});
clrbk = imagecolorallocate美元(美元IMG,0xFF,0xFF,0xff);
$ CLRT = imagecolorallocate($ IMG,0x00,0x00,0x00);
填充背景色
imagefill($ 0, 0美元的数据,clrbk);
总和
美元= 0;
($ i = 0;$ i $ n;$ + +)
美元美元美元datlst TOT = {我};
$ SD = 0;
$ = 0;333
$ = 10 + $ B * 2 + V $;
($ i = 0;$ i $ n;$ + +)
{
$ SD = $ ED;
ED =美元美元美元datlst {我} / * 360美元合计;
循环蛋糕
draw_sector3d(美元美元美元公司IMG,牛,,$,$,$ V,SD美元,美元美元美元,clrlst {我}); / /美元美元的SD,ED。
绘制/标签
Imagefilledrectangle($ img,5,美元,5美元美元+ FW,LY +美元美元美元clrlst FH,{我});
Imagerectangle($ img,5,美元,5美元美元+ FW,LY + $ FH,$ CLRT);
/ / imagestring美元美元(IMG,字体,5 + 2 *美元美元美元FW,LY,lablst {我}。:datlst {我}美元美元。()。(圆(10000 *($ datlst {我} / / 100美元TOT)))。%),$ CLRT);
$str = iconv(GB2312
imagettftext美元美元(IMG,字体,0, 5 + 2 * $ FW,LY+13美元美元,CLRT,, /宋体。TTF
$ = $ FH + 2;
}
输出图形
页眉(内容类型:图像);
输出生成的图片
$imgFileName = ../temp/.Time (). PNG;
imagepng($ IMG,imgfilename美元);
回声'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
}
datlst美元=数组(30, 10, 20,20, 10, 20,10, 20); / /数据
lablst美元=阵列(中国科技大学
clrlst美元=阵列(0x99ff00,0xff6666,0x0099ff,0xff99ff,0xffff99,0x99ffff,0xff3333,0x009999);
绘图
draw_img(datlst美元美元美元,lablst,clrlst);
>