用GD图库生成横竖柱状图折线图的类-PHP精通-PHP教程-幽默笑话

133浏览

用GD图库生成横竖柱状图折线图的类-PHP精通-PHP教程-幽默笑话

文章内容用GD图库生成横竖柱状图折线图的类修改时间:[2009/01/1714:25]阅读次数:[460]发表者:[起缘]最近写的一个GD图库用以生成横竖柱状图和折线图的类库,算是一个教学例程吧ClassImageReport{var$X;//图片大小X轴var$Y;//图片大小Y轴var$R;//背影色R值var$G;//...$B;//...$TRANSPARENT;//是否透明1或0var$IMAGE;//图片对像//-------------------var$ARRAYSPLIT;//指定用于分隔数值的符号var$ITEMARRAY;//数值var$REPORTTYPE;//图表类型,1为竖柱形2为横柱形3为折线形var$BORDER;//距离//-------------------var$FONTSIZE;//字体大小var$FONTCOLOR;//字体颜色//--------参数设置函数functionsetImage($SizeX,$SizeY,$R,$G,$B,$Transparent){$this-X=$SizeX;$this-Y=$SizeY;$this-R=$R;$this-G=$G;$this-B=$B;$this-TRANSPARENT=$Transparent;}functionsetItem($ArraySplit,$ItemArray,$ReportType,$Border){$this-ARRAYSPLIT=$ArraySplit;$this-ITEMARRAY=$ItemArray;$this-REPORTTYPE=$ReportType;$this-BORDER=$Border;}functionsetFont($FontSize){$this-FONTSIZE=$FontSize;}//----------------主体functionPrintReport(){Header(Content-type:image/gif);//建立画布大小$this-IMAGE=ImageCreate($this-X,$this-//设定画布背景色$background=ImageColorAllocate($this-IMAGE,$this-R,$this-G,$this-if($this-TRANSPARENT==1){//背影透明Imagecolortransparent($this-IMAGE,$background);}else{//如不要透明时可填充背景色ImageFilledRectangle($this-IMAGE,0,0,$this-X,$this-Y,$background);}//参数字体文小及颜色$this-FONTCOLOR=ImageColorAllocate($this-IMAGE,255-$this-R,255-$this-G,255-$this-Switch($this-REPORTTYPE){case0:break;case1:$this-imageColumnS();break;case2:$this-imageColumnH();break;case3:$this-imageLine();break;}$this-printXY();$this-printAll();}//-----------打印XY坐标轴functionprintXY(){//画XY坐标轴*/$color=ImageColorAllocate($this-IMAGE,255-$this-R,255-$this-G,255-$this-$xx=$this-X/10;$yy=$this-Y-$this-Y/10;ImageLine($this-IMAGE,$this-BORDER,$this-BORDER,$this-BORDER,$this-Y-$this-BORDER,$color);//X轴ImageLine($this-IMAGE,$this-BORDER,$this-Y-$this-BORDER,$this-X-$this-BORDER,$this-Y-$this-BORDER,$color);//y轴//Y轴上刻度$rulerY=$this-Y-$this-BORDER;while($rulerY$this-BORDER*2){$rulerY=$rulerY-$this-BORDER;ImageLine($this-IMAGE,$this-BORDER,$rulerY,$this-BORDER-2,$rulerY,$color);}//X轴上刻度$rulerX=$rulerX+$this-BORDER;while($rulerX($this-X-$this-BORDER*2)){$rulerX=$rulerX+$this-BORDER;//ImageLine($this-IMAGE,$this-BORDER,10,$this-BORDER+10,10,$color);ImageLine($this-IMAGE,$rulerX,$this-Y-$this-BORDER,$rulerX,$this-Y-$this-BORDER+2,$color);}}//--------------竖柱形图functionimageColumnS(){$item_array=Split($this-ARRAYSPLIT,$this-ITEMARRAY);$num=Count($item_array);$item_max=0;for($i=0;$i$num;$i++){$item_max=Max($item_max,$item_array[$i]);}$xx=$this-BORDER*2;//画柱形图for($i=0;$i$num;$i++){srand((double)microtime()*1000000);if($this-R!=255$this-G!=255$this-B!=255){$R=Rand($this-R,200);$G=Rand($this-G,200);$B=Rand($this-B,200);}else{$R=Rand(50,200);$G=Rand(50,200);$B=Rand(50,200);}$color=ImageColorAllocate($this-IMAGE,$R,$G,$B);//柱形高度$height=($this-Y-$this-BORDER)-($this-Y-$this-BORDER*2)*($item_array[$i]/$item_max);ImageFilledRectangle($this-IMAGE,$xx,$height,$xx+$this-BORDER,$this-Y-$this-BORDER,$color);ImageString($this-IMAGE,$this-FONTSIZE,$xx,$height-$this-BORDER,$item_array[$i],$this-FONTCOLOR);//用于间隔$xx=$xx+$this-BORDER*2;}}//-----------横柱形图functionimageColumnH(){$item_array=Split($this-ARRAYSPLIT,$this-ITEMARRAY);$num=Count($item_array);$item_max=0;for($i=0;$i$num;$i++){$item_max=Max($item_max,$item_array[$i]);}$yy=$this-Y-$this-BORDER*2;//画柱形图for($i=0;$i$num;$i++){srand((double)microtime()*1000000);if($this-R!=255$this-G!=255$this-B!=255){$R=Rand($this-R,200);$G=Rand($this-G,200);$B=Rand($this-B,200);}else{$R=Rand(50,200);$G=Rand(50,200);$B=Rand(50,200);}$color=ImageColorAllocate($this-IMAGE,$R,$G,$B);//柱形长度$leight=($this-X-$this-BORDER*2)*($item_array[$i]/$item_max);ImageFilledRectangle($this-IMAGE,$this-BORDER,$yy-$this-BORDER,$leight,$yy,$color);ImageString($this-IMAGE,$this-FONTSIZE,$leight+2,$yy-$this-BORDER,$item_array[$i],$this-FONTCOLOR);//用于间隔$yy=$yy-$this-BORDER*2;}}//--------------折线图functionimageLine(){$item_array=Split($this-ARRAYSPLIT,$this-ITEMARRAY);$num=Count($item_array);$item_max=0;for($i=0;$i$num;$i++){$item_max=Max($item_max,$item_array[$i]);}//$xx=$this-BORDER;//画柱形图for($i=0;$i$num;$i++){srand((double)microtime()*1000000);if($this-R!=255$this-G!=255$this-B!=255){$R=Rand($this-R,200);$G=Rand($this-G,200);$B=Rand($this-B,200);}else{$R=Rand(50,200);$G=Rand(50,200);$B=Rand(50,200);}$color=ImageColorAllocate($this-IMAGE,$R,$G,$B);//柱形高度$height_now=($this-Y-$this-BORDER)-($this-Y-$this-BORDER*2)*($item_array[$i]/$item_max);if($i!=0){ImageLine($this-IMAGE,$xx,$height_next,$xx+$this-BORDER,$height_now,$color);}ImageString($this-IMAGE,$this-FONTSIZE,$xx+$this-BORDER,$height_now-$this-BORDER/2,$item_array[$i],$this-FONTCOLOR);$height_next=$height_now;//用于间隔$xx=$xx+$this-BORDER;}}//--------------完成打印图形(){ImageGIF($this-IMAGE);ImageDestroy($this-IMAGE);}//--------------调试functiondebug(){echoX:.$:.$this-echobrBORDER:.$this-BORDER;$item_array=split($this-ARRAYSPLIT,$this-ITEMARRAY);$num=Count($item_array);echobr数值个数:.$数值:for($i=0;$i$num;$i++){echobr.$item_array[$i];}}}$report=newImageReport;$report-setImage(600,300,255,255,255,1);//参数(长,宽,背影色R,G,B,是否透明1或0)$temparray=50,25,100,250,180,200,150,220,200,150,50,25,100,250,180,200,150,220,200,150//数值,用指定符号隔开$report-setItem(,,$temparray,3,20);//参数(分隔数值的指定符号,数值变量,样式1为竖柱图2为横柱图3为折线图,距离)$report-setFont(1);//字体大小1-10$report-PrintReport();//$report-debug();//调式之用。

您现在的位置:诗歌常识题库 > 当代文学

上一篇:梦见圣贤 梦见圣贤什么意思

下一篇:没有了

你可能喜欢的:
友情链接