PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP资源共享 » 一个画柱壮图和折线图的类,大家给提点意见!
本页主题: 一个画柱壮图和折线图的类,大家给提点意见! 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

自由的龙

该用户目前不在线
级别: 中级程序员
精华: 1
发帖: 1264
威望: 1267 点
金钱: 12660 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-04-16
最后登录:2006-06-27

一个画柱壮图和折线图的类,大家给提点意见!


<?
//画柱状图或者折线图的类
class pic
{
var $length;//定义图片的长和宽
var $width;//定义图片的长和宽
var $X;//X轴分几段
var $Y;//Y轴分几段
var $XValue =array();//每个X轴单位所代表的值,并用数组进行定义
var $YValue;//每个Y轴单位所代表的值
//var $angle = 0;//X轴数据显示的角度
var $YY = array();
//var $type;//0表示柱状曲线;1表示折线曲线

function creat($type)
{
  if($type==0)
  {
  $Im = Imagecreate($this->width+35,$this->length+31);
  //设定颜色开始
  $bgcolor = ImageColorAllocate($Im,255,255,255);
  $White = ImageColorAllocate($Im,255,255,255);
  $Red = ImageColorAllocate($Im,255,0,0);
  $Black = ImageColorAllocate($Im,0,0,0);
  $colorGrey = ImageColorAllocate($Im,220, 220, 220);
  $colorDarkBlue=Imagecolorallocate($Im, 104, 157, 228);
  $colorLightBlue=Imagecolorallocate($Im, 184, 212, 250);
  //设定颜色结束
  //背景表格绘制开始
  $RectangleCellX=$this->width/$this->X;
  $RectangleCellY=$this->length/$this->Y;
  for($i=0;$i<$this->X+1;$i++)
  {
    $Xi1=$i*$RectangleCellX+30;
    $Yi1=0;
    $Xi2=($i+1)*$RectangleCellX+30;
    $Yi2=$this->length;
    Imagestring($Im,2,$i*$RectangleCellX+30+0.3*$RectangleCellX, $this->length+5,$this->XValue[$i], $Black);
  }
  for($j=0;$j<$this->Y;$j++)
  {
    $Xi1=30;
    $Yi1=$j*$RectangleCellY;
    $Xi2=$this->width+30;
    $Yi2=($j+1)*$RectangleCellY;
    ImageRectangle($Im,$Xi1,$Yi1,$Xi2,$Yi2,$colorGrey);
    Imagestring($Im,2, 5, $this->length-$j*$RectangleCellY-8, $this->YValue*$j, $Black);
  }
  //背景表格绘制完成
  //绘制柱形图开始
  for($i=0;$i<$this->X;$i++)
  {
    $Xi11=30+$i*$RectangleCellX;
    $Yi11=$this->length-$this->YY[$i]/$this->YValue*$this->length/$this->Y;
    $Xi22=30+($i+1)*$RectangleCellX;
    $Yi22=$this->length;

    $Xi111=30+3*$RectangleCellX/4+$i*$RectangleCellX;
    $Yi111=$this->length-$this->YY[$i]/$this->YValue*$this->length/$this->Y;
    $Xi222=30+($i+1)*$RectangleCellX;
    $Yi222=$this->length;

    Imagefilledrectangle($Im,$Xi11,$Yi11,$Xi22,$Yi22,$colorLightBlue);
    Imagefilledrectangle($Im,$Xi111,$Yi111,$Xi222,$Yi222,$colorDarkBlue);
    unset($Xi11,$Yi11,$Xi22,$Yi22);
  }
  //绘制柱形图结束
  ImageRectangle($Im,30,0,$this->width+30,$this->length,$Black);
  }
  else
  {
  $Im = Imagecreate($this->width+31,$this->length+31);
  //设定颜色开始
  $bgcolor = ImageColorAllocate($Im,255,255,255);
  $White = ImageColorAllocate($Im,255,255,255);
  $Red = ImageColorAllocate($Im,255,0,0);
  $Black = ImageColorAllocate($Im,0,0,0);
  $colorGrey = ImageColorAllocate($Im,220, 220, 220);
  $colorDarkBlue=Imagecolorallocate($Im, 104, 157, 228);
  $colorLightBlue=Imagecolorallocate($Im, 184, 212, 250);
  //设定颜色结束
  //背景表格绘制开始
  $RectangleCellX=$this->width/$this->X;
  $RectangleCellY=$this->length/$this->Y;
  for($i=0;$i<$this->X;$i++)
  {
    $Xi1=$i*$RectangleCellX+30;
    $Yi1=0;
    $Xi2=($i+1)*$RectangleCellX+30;
    $Yi2=$this->length;
    ImageRectangle($Im,$Xi1,$Yi1,$Xi2,$Yi2,$colorGrey);
    Imagestring($Im,2,$i*$RectangleCellX+30+0.6*$RectangleCellX, $this->length+5,$this->XValue[$i], $Black);


  }
  for($j=0;$j<$this->Y;$j++)
  {
    $Xi1=30;
    $Yi1=$j*$RectangleCellY;
    $Xi2=$this->width+30;
    $Yi2=($j+1)*$RectangleCellY;
    ImageRectangle($Im,$Xi1,$Yi1,$Xi2,$Yi2,$colorGrey);
    Imagestring($Im,2, 5, $this->length-$j*$RectangleCellY-8, $this->YValue*$j, $Black);
  }
  //背景表格绘制完成
  //绘制折线开始
  for($k=0;$k<=count($this->YY);$k++)
  {
    if($k!=count($this->YY)-1)
    {
  Imageline($Im,30+$RectangleCellX*($k+1),$this->length-$this->YY[$k]/$this->YValue*$this->length/$this->Y,30+$RectangleCellX*($k+2),$this->length-$this->YY[$k+1]/$this->YValue*$this->length/$this->Y,$colorDarkBlue);
    }
    if($k!=count($this->YY))
    {        
  Imagefilledrectangle($Im,30+$RectangleCellX*($k+1)-2,$this->length-$this->YY[$k]/$this->YValue*$this->length/$this->Y-2,30+$RectangleCellX*($k+1)+2,$this->length-$this->YY[$k]/$this->YValue*$this->length/$this->Y+2,$Red);
    }
  }
  //绘制折线结束
  }
  ImageRectangle($Im,30,0,$this->width+30,$this->length,$Black);
  Imageline($Im,$this->width+30,0,$this->width+30,$this->length,$Red);
  ImagePNG($Im);
  ImageDestroy($Im);
}
}

//使用方法
/*
$pic=new pic;
$pic->length=150;
$pic->width=200;
$pic->X=5;
$pic->XValue=array("5","6","7","8","9");
$pic->Y=10;
$pic->YValue=1;
$pic->YY=array(3,4,3,6,5,3,5,7,9,10);
$pic->creat(1);
*/
?>
顶端 Posted: 2006-04-25 16:20 | [楼 主]
ok888ok



该用户目前不在线
级别: 新手上路
精华: 0
发帖: 10
威望: 11 点
金钱: 100 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-08-31
最后登录:2006-08-31


路过顶一下。。。
顶端 Posted: 2006-08-31 23:23 | 1 楼
buzzard



该用户目前不在线
级别: 新手上路
精华: 0
发帖: 1
威望: 2 点
金钱: 10 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-09-01
最后登录:2006-09-04


巧了,我也做过
顶端 Posted: 2006-09-01 16:07 | 2 楼
zhouzeng



该用户目前不在线
级别: 新手上路
精华: 0
发帖: 4
威望: 5 点
金钱: 40 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2006-10-17
最后登录:2006-10-28


这个好。值得收藏!
顶端 Posted: 2006-10-17 01:15 | 3 楼
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP资源共享

时:11-23 19:46 Copyright © 2006 phpwhy.com 权
ICP05060669

曳息 -