动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   PHP → 阅读文章

 如何用PHP制作“饼图”函数?

作者来源: 
阅读 1128 人次 , 2006-4-18 15:27:00 

 

########

bimage.php3

########

/*

函数说明

$chartdata:数据,是数组元素

$chartfont:字号

$chartdiameter:决定饼的大小(要看你饿不饿了,呵呵)

$chartlabel:标题,也是数组元素

$colorslice:颜色数组,例如$tmp=array255,255,255);$colorslic=array($tmp);

$colorborder:边框颜色,数组

$colortext :文本颜色,数组

$colorbody:背景颜色,数组

$file:输出图片文件名*/

function bimage($chartdata,

$chartfont,

$chartdiameter ,

$chartlabel ,

$colorslice,

$colorbody ,

$colorborder,

$colortext ,

$file

)

{

$chartdiameter=150;

$chartfontheight=imagefontheight($chartfont);

$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;

$chartdata=array($d1,$d2,$d3,$d4,$d5);

$chartlabel=array("D1","D2","D3","D4","D5");

$chartwidth=$chartdiameter+20;

$chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata));

header("content-type:image/gif");

$image=imagecreate($chartwidth,$chartheight);

$colorbody =imagecolorallocate ($image,$colorbody[0],$colorbody[1],$colorbody[2]);

$colortext =imagecolorallocate ($image,$colortext[0],$colortext[1],$colortext[2]);

$colorborder =imagecolorallocate ($image,$colorborder[0],$colorborder[1],$colorborder[2]);

for ($i=0;$i {

$t=imagecolorallocate($image,$colorslice[$i][0],$colorslice[$i][1],$colorslice[$i][2]);

$colorslice[$i]=$t;

}

for($i=0;$i {

$charttotal+=$chartdata[$i];

}

$chartcenterx=$chartdiameter/2+10;

$chartcentery=$chartdiameter/2+10;

$degrees=0;

for($i=0;$i {

$startdegrees=round($degrees);

$degrees+=(($chartdata[$i]/$charttotal)*360);

$enddegrees=round($degrees);

$currentcolor=$colorslice[$i%(count($colorslice))];

imagearc($image ,

$chartcenterx,

$chartcentery,

$chartdiameter,

$chartdiameter,

$startdegrees,

$enddegrees,

$currentcolor);

list($arcx,$arcy)=circle_point($startdegrees,$chartdiameter);

imageline($image,

$chartcenterx,

$chartcentery,

floor($chartcenterx+$arcx),

floor($chartcentery+$arcy),

$currentcolor );

list($arcx,$arcy)=circle_point($enddegrees,$chartdiameter);

imageline($image,

$chartcenterx,

$chartcentery,

ceil($chartcenterx+$arcx),

ceil($chartcentery +$arcy),

$currentcolor);

$midpoint=round((($enddegrees-$startdegrees)/2)+$startdegrees);

list($arcx,$arcy)= circle_point ( $midpoint, $chartdiameter/2);

imagefilltoborder($image,

floor($chartcenterx+$arcx),

floor($chartcentery+$arcy),

$currentcolor,

$currentcolor);

}

imagearc($image,

$chartcenterx,

$chartcentery,

$chartdiameter,

$chartdiameter,

0,360,

$colorborder);

imagefilltoborder ($image,

floor($chartcenterx +( $chartdiameter /2)+2),

$chartcentery ,

$colorborder,

$colorborder );

for ($i=0;$i {

$currentcolor=$colorslice[$i%(count($colorslice))];

$liney=$chartdiameter+20+($i*($chartfontheight+2));

imagerectangle ($image,

10,

$liney,

20+$chartfontheight,

$liney+$chartfontheight,

$colorbody);

imagefilltoborder($image,

12,

$liney+2,

$colorbody,

$currentcolor);

imagestring($image,

$chartfont,

40+$chartfontheight,

$liney,

"$chartlabel[$i]:$chartdata[$i]",

$colortext);

}

imagegif ($image,$file);

}

function radians($degrees)

{

return($degrees*(pi()/180.0));

}

function circle_point($degrees,$diameter)

{

$x=cos(radians($degrees))*($diameter/2);

$y=sin(radians($degrees))*($diameter/2);

return (array($x,$y));

}

?>

###########

这是一个调用的例子

###########

include("bfunc.php3");

$chartdiameter=250;

$chartfont=5;

$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;

$chartdata=array($d1,$d2,$d3,$d4,$d5);

$chartlabel=array("D1","D2","D3","D4","D5");

$colorbody=array(0xff,0xff,0xff);

$colorborder=array(0x00,0x00,0x00);

$colortext=array(0xff,0xff,0xff);

$color1=array(0xff,0x00,0x00);

$color2=array(0x00,0xff,0x00);

$color3=array(0x00,0x00,0xff);

$color4=array(0xff,0xff,0x00);

$color5=array(0xff,0x00,0xff);

$colorslice=array($color1 ,$color2,$color3,$color4,$color5);

$file="tj.gif"

bimage($chartdata,

$chartfont,

$chartdiameter ,

$chartlabel ,

$colorslice,

$colorbody ,

$colorborder,

$colortext ,

$file )

?>

 

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:深入了解php4(1)--回到未来
· 下一篇:如何编译PHP源代码(介绍Zend Encode的安装方法)
· 按比例控制图片显示(自动缩放函数)
· PHP中如何在输出内容后再输出头信息?
· 分页显示详解
· xzn_html_tree(1.0) 可折叠大纲
· 程序员的进化--从学生到首席执行官


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077