文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>生成柱状图、横柱图、折线图的类

生成柱状图、横柱图、折线图的类

时间:2006-11-29  来源:yueming


X=$SizeX;  
  $this->Y=$SizeY;  
  $this->R=$R;  
  $this->G=$G;  
  $this->B=$B;  
  $this->TRANSPARENT=$Transparent;  
}  
/* 设置获取数字 */
function setItem($ArraySplit,$ItemArray,$ReportType,$Border)
{  
  $this->ARRAYSPLIT=$ArraySplit;  
  $this->ITEMARRAY=$ItemArray;  
  $this->REPORTTYPE=$ReportType;  
  $this->BORDER=$Border;  
}

/* 设置字体 */
function setFont($FontSize)
{  
  $this->FONTSIZE=$FontSize;  
}  
/* 主体 */
function PrintReport()
{  
  Header( "Content-type: image/gif");  
  //建立画布大小  
  $this->IMAGE=ImageCreate($this->X,$this->Y);  
  //设定画布背景色  
  $background=ImageColorAllocate($this->IMAGE,$this->R,$this->G,$this->B);  
  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->B);  
  Switch ($this->REPORTTYPE)
  {  
   case "0":  
    break;  
   case "1":  
    $this->imageColumnS();  
    break;  
   case "2":  
    $this->imageColumnH();  
    break;  
   case "3":  
    $this->imageLine();  
    break;  
  }  
  $this->printXY();  
  $this->printAll();  
}  
/* 打印XY坐标轴 */
function printXY()
{  
  //画XY坐标轴*/  
  $color=ImageColorAllocate($this->IMAGE,255-$this->R,255-$this->G,255-$this->B);  
  $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($rulerXX-$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);  
  }  
}  
/* 竖柱形图 */
function imageColumnS()
{  
  $item_array=Split($this->ARRAYSPLIT,$this->ITEMARRAY);  
  $num=Count($item_array);  
  $item_max=0;  
  for ($i=0;$iBORDER*2;  
  //画柱形图  
  for ($i=0;$iR!=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;  
  }  
}  
/* 横柱形图 */
function imageColumnH()
{  
  $item_array=Split($this->ARRAYSPLIT,$this->ITEMARRAY);  
  $num=Count($item_array);  
  $item_max=0;  
  for ($i=0;$iY-$this->BORDER*2;  
  //画柱形图  
  for ($i=0;$iR!=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;  
  }  
}  
/* 折线图 */
function imageLine()
{  
  $item_array=Split($this->ARRAYSPLIT,$this->ITEMARRAY);  
  $num=Count($item_array);  
  $item_max=0;  
  for ($i=0;$iBORDER;  
  //画柱形图  
  for ($i=0;$iR!=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;  
  }  
}  
/* 完成打印图形 */
function printAll()
{  
  ImageGIF($this->IMAGE);  
  ImageDestroy($this->IMAGE);  
}  
/* 调试函数 */
function debug()
{  
  echo "X:".$this->X."
Y:".$this->Y;  
  echo "
BORDER:".$this->BORDER;  
  $item_array=split($this->ARRAYSPLIT,$this->ITEMARRAY);  
  $num=Count($item_array);  
  echo "
数值个数:".$num."
数值:";  
  for ($i=0;$i
/* 使用实例代码 */
以下是引用片段:
setImage(2000, 300, 255, 255, 255, 1);
//数值,用指定符号隔开  
$temparray="50,25,100,250,180,200,2150,220,200,150,50,25,100,250,180,200,150,220,200,150";
//参数(分隔数值的指定符号,数值变量,样式1为竖柱图2为横柱图3为折线图,距离)  
$report->setItem(',',$temparray,3,20);
//字体大小1-10  
$report->setFont(1);
//输出图片
$report->PrintReport();  
//调式
// $report->debug();
?>


相关阅读 更多 +
排行榜 更多 +
幸运硬币官方正版下载

幸运硬币官方正版下载

休闲益智 下载
宝宝来找茬手机版 v9.86.00.00 安卓版

宝宝来找茬手机版 v9.86.00.00 安卓版

休闲益智 下载
翻滚飞机大战最新版 v1.0.4 安卓版

翻滚飞机大战最新版 v1.0.4 安卓版

飞行射击 下载