再介绍一下我自己,呵呵 我是个新手,当时学php纯粹是为了应付领导哦,让我们做统计图,我本来是学asp的,突然改行很不适应,不过php功能的确很强大呀,呵呵,我都离不了他了,这不,饼图,柱型图都搞定了,可是还有很多问题我不会,还希望大家多指教呀,说了好多废话了,我还以为是在写信那 我的联系方式是: email:[email protected] http://qdlover.yeah.net 老板催了,没办法,饼图函数出炉了,大家快抢呀 ######## 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 ) ?> |