您现在的位置:文学期刊 > 西方诗歌 > 正文

PHP对象编程实现3D饼图-PHP代码-PHP教程-幽默笑话

PHP对象编程实现3D饼图-PHP代码-PHP教程-幽默笑话

文章内容PHP对象编程实现3D饼图修改时间:[2008/10/0512:15]阅读次数:[832]发表者:[起缘]php//公用函数//把角度转换为弧度functiondeg2Arc($degrees){return($degrees*(pi()/));}//RGBfunctiongetRGB($color){$R=($color16)0xff;$G=($color8)0xff;$B=($color)0xff;return(array($R,$G,$B));}//取得在椭圆心为(0,0)的椭圆上x,y点的值functionpie_point($deg,$va,$vb){$x=cos(deg2Arc($deg))*$va;$y=sin(deg2Arc($deg))*$vb;return(array($x,$y));}//3D饼图类classPie3d{var$a;//椭圆长半轴var$b;//椭圆短半轴var$DataArray;//每个扇形的数据var$ColorArray;//每个扇形的颜色要求按照十六进制书写但前面不加0x//为边缘及阴影为黑色functionPie3d($pa=100,$pb=60,$sData=100,200,300,400,500,$sColor=ee00ff,dd0000,cccccc,ccff00,00ccff){$this-a=$pa;$this-b=$pb;$this-DataArray=split(,,$sData);$this-ColorArray=split(,,$sColor);}functionsetA($v){$this-a=$v;}functiongetA(){return$this-}functionsetB($v){$this-b=$v;}functiongetB(){return$this-}functionsetDataArray($v){$this-DataArray=split(,,$v);}functiongetDataArray($v){return$this-DataArray;}functionsetColorArray($v){$this-ColorArray=split(,,$v);}functiongetColorArray(){return$this-ColorArray;}functionDrawPie(){$image=imagecreate($this-a*2+40,$this-b*2+40);$PieCenterX=$this-a+10;$PieCenterY=$this-b+10;$DoubleA=$this-a*2;$DoubleB=$this-b*2;list($R,$G,$B)=getRGB(0);$colorBorder=imagecolorallocate($image,$R,$G,$B);$DataNumber=count($this-DataArray);//$DataTotalfor($i=0;$i$DataNumber;$i++)$DataTotal+=$this-DataArray[$i];//算出数据和//填充背境imagefill($image,0,0,imagecolorallocate($image,0xFF,0xFF,0xFF));/***画每一个扇形*/$Degrees=0;for($i=0;$i$DataNumber;$i++){$StartDegrees=round($Degrees);$Degrees+=(($this-DataArray[$i]/$DataTotal)*360);$EndDegrees=round($Degrees);$percent=number_format($this-DataArray[$i]/$DataTotal*100,1);list($R,$G,$B)=getRGB(hexdec($this-ColorArray[$i]));$CurrentColor=imagecolorallocate($image,$R,$G,$B);if($R60and$R256)$R=$R-60;if($G60and$G256)$G=$G-60;if($B60and$B256)$B=$B-60;$CurrentDarkColor=imagecolorallocate($image,$R,$G,$B);//画扇形弧imagearc($image,$PieCenterX,$PieCenterY,$DoubleA,$DoubleB,$StartDegrees,$EndDegrees,$CurrentColor);//画直线list($ArcX,$ArcY)=pie_point($StartDegrees,$this-a,$this-imageline($image,$PieCenterX,$PieCenterY,floor($PieCenterX+$ArcX),floor($PieCenterY+$ArcY),$CurrentColor);//画直线list($ArcX,$ArcY)=pie_point($EndDegrees,$this-a,$this-imageline($image,$PieCenterX,$PieCenterY,ceil($PieCenterX+$ArcX),ceil($PieCenterY+$ArcY),$CurrentColor);//填充扇形$MidPoint=round((($EndDegrees-$StartDegrees)/2)+$StartDegrees);list($ArcX,$ArcY)=Pie_point($MidPoint,$this-a*3/4,$this-b*3/4);imagefilltoborder($image,floor($PieCenterX+$ArcX),floor($PieCenterY+$ArcY),$CurrentColor,$CurrentColor);imagestring($image,2,floor($PieCenterX+$ArcX-5),floor($PieCenterY+$ArcY-5),$percent.%,$colorBorder);//画阴影if($StartDegrees=0and$StartDegrees=180){if($EndDegrees=180){for($k=1;$k15;$k++)imagearc($image,$PieCenterX,$PieCenterY+$k,$DoubleA,$DoubleB,$StartDegrees,$EndDegrees,$CurrentDarkColor);}else{for($k=1;$k15;$k++)imagearc($image,$PieCenterX,$PieCenterY+$k,$DoubleA,$DoubleB,$StartDegrees,180,$CurrentDarkColor);}}}/*到此脚本已经生了一幅图像了**现在需要的是把它发到浏览器上,重要的一点是要将标头发给浏览器,让它知道是一个GIF文件。 不然的话你只能看到一堆奇怪的乱码*///输出生成的图片header(Content-type:image/gif);imagegif($image);imagedestroy($image);}//EnddrawPie()}//Endclass//实现$objp=newPie3d();$objp-DrawPie();。

上一篇:清代名家笔下最美的春色图! 游泸沽湖感受词语
下一篇:没有了
回到顶部