• --:)欢迎访问锋网源码(:--
  • 首页
  • RSS订阅
  • 常用软件
  • 网页模板
  • 网站运作
  • 锋网学院
  • 智能建站
  • 时代互联
  • 中国红网
  • 中资源!
  • 繁體中文

  • 学院首页
  • 新闻资讯
  • 网站运营
  • 网站开发
  • 美工设计
  • 数据库类
  • 服务器类
  • 网络应用
  • 操作系统
  • 软件教学
编程开发   认证考试   网络安全   文章搜索: 高级搜索
会员登录/控制面版 您的位置: 学院首页 >> 网站开发 >> PHP教程 >> 文章内容
 

精彩推荐

 
 

本类推荐文章

  • PHP的十个高级技巧
  • PHP找回密码机制流程
  • 解决phpmyadmin 乱码,支持gb..
 
 

本类阅读排行

  • PHP的十个高级技巧
  • PHP找回密码机制流程
  • 解决phpmyadmin 乱码,支持gb..
  • Windows XP下PHP+MySQL环境搭..
  • 如何基于discuz开发网站通行..
  • PHP代码加密解密一法
  • PHP链接ACCESS数据库简单的方..
  • PHP中格式化显示时间
  • 一生成柱状图、横柱图、折线..
  • PHP 字符串操作入门教程
  • PHP/MySQL教程 完整教程
  • php命令行脚本多进程并发执行..
  • 一个简单计数器的源代码
  • AJAX在PHP中的简单使用
  • 实现统计在线人数/用户列表
  • 用PHP制作动态计数器
  • 做个自己站内搜索引擎
  • PHP代码:得到客户端的IP
  • PHP入门速成
  • 初学入门 PHP 和 MySQL
 
 

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

  • 日期:2006-11-04     人气:     出处:锋网源码     作者:
  • 字体大小:
  • 小
  • 中
  • 大

以下是引用片段:

<?php
/**
 * 文件:cal_image.class.php
 * 功能:产生柱状、折线图、横柱图类
 * 作者:yemaosheng.com
 */

Class ImageReport
{
 /* 图片数属性 */
 var $X;    //图片大小X轴
 var $Y;    //图片大小Y轴
 var $R;    //背影色R值
 var $G;    //背影色G值
 var $B;    //背影色B值
 var $TRANSPARENT; //是否透明1或0
 var $IMAGE;   //图片对像
 /* 附加属性 */
 var $ARRAYSPLIT; //指定用于分隔数值的符号
 var $ITEMARRAY;  //数值
 var $REPORTTYPE; //图表类型,1为竖柱形2为横柱形3为折线形
 var $BORDER;  //距离
 /* 字体属性*/
 var $FONTSIZE;  //字体大小
 var $FONTCOLOR;  //字体颜色
 
 /* 设置图片 */
 function setImage($SizeX,$SizeY,$R,$G,$B,$Transparent)
 {
  $this->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($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); 
  } 
 } 

 /* 竖柱形图 */
 function imageColumnS()
 { 
  $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; 
  } 
 } 

 /* 横柱形图 */
 function imageColumnH()
 { 
  $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; 
  } 
 } 

 /* 折线图 */
 function imageLine()
 { 
  $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; 
  } 
 } 

 /* 完成打印图形 */
 function printAll()
 { 
  ImageGIF($this->IMAGE); 
  ImageDestroy($this->IMAGE); 
 } 

 /* 调试函数 */
 function debug()
 { 
  echo "X:".$this->X."<br>Y:".$this->Y; 
  echo "<br>BORDER:".$this->BORDER; 
  $item_array=split($this->ARRAYSPLIT,$this->ITEMARRAY); 
  $num=Count($item_array); 
  echo "<br>数值个数:".$num."<br>数值:"; 
  for ($i=0;$i<$num;$i++)
  {
   echo "<br>".$item_array[$i]; 
  } 
 } 
} 
?>

/* 使用实例代码 */

以下是引用片段:

<?
 //实例化对象
 $report = new ImageReport(); 

 //参数(长,宽,背影色R,G,B,是否透明1或0)
 $report->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();
?>

相关文章
相关软件

  • 网友评论:
  • 查看所有评论
  • 我要发表评论
 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 加入收藏 | 帮助中心 |

Copyright © 2006-2007 fwvv.net  程序支持:木翼  皖ICP备06004916号  

感谢:点击网络 联网科技 天盈信息  提供服务器及带宽赞助