您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

php 数据统计图类实例代码详解

来源:未知 责任编辑:智问网络 发表时间:2013-11-12 17:09 点击:

  1. <?php
  2. /***
  3. * 时间 2010-8-9
  4. * www.ite5e.com
  5. * 注意:如有什么问题可以回帖。
  6. * 程序最底下有调用测试代码。
  7. ***/
  8. define("DEFAULT_FONT_PATH", "c:/windows/fonts/simhei.ttf");
  9. class barbarism
  10. {
  11.     private $_x;
  12.     private $_y;
  13.     private $_h;
  14.     public $_l = 50;
  15.     private $_w = null;
  16.     private $_srcPoints = array();
  17.     private $_points = array();
  18.     
  19.     public function __construct($x, $y, $h, $l = 50, $w = null)
  20.     {
  21.         $this->_x = $x;
  22.         $this->_y = $y;
  23.         $this->_h = $h;
  24.         $this->_l = $l;
  25.         $this->_w = $w;
  26.         $this->_srcPoints = $this->getSrcPoints();
  27.         $this->_points = $this->getPoints();
  28.     }
  29.     
  30.     public function getSrcPoints()
  31.     {
  32.         return array(
  33.             array($this->_x                 , $this->_y),
  34.             array($this->_x $this->_l       , $this->_y),
  35.             array($this->_x (1.35*$this->_l), $this->_y-(0.35*$this->_l)),
  36.             array($this->_x (0.35*$this->_l), $this->_y-(0.35*$this->_l)),
  37.             array($this->_x                 , $this->_y $this->_h),
  38.             array($this->_x $this->_l       , $this->_y $this->_h),
  39.             array($this->_x (1.35*$this->_l), $this->_y $this->_h-(0.35*$this->_l))
  40.         );
  41.     }
  42.     
  43.     public function getPoints()
  44.     {
  45.         $points = array();
  46.         foreach($this->_srcPoints as $key => $val)
  47.         {
  48.             $points[] = $val[0];
  49.             $points[] = $val[1];
  50.         }
  51.         return $points;
  52.     }
  53.     
  54.     public function getTopPoints()
  55.     {
  56.         return array_slice($this->_points, 0, 8); //顶坐标
  57.     }
  58.     
  59.     public function getBelowPoints()
  60.     {
  61.         return array_merge(array_slice($this->_points, 0, 2), array_slice($this->_points, 8, 4), array_slice($this->_points, 2, 2)); //下坐标
  62.     }
  63.     
  64.     public function getRightSidePoints()
  65.     {
  66.         return array_merge(array_slice($this->_points, 2, 2), array_slice($this->_points, 10, 4), array_slice($this->_points, 4, 2)); //右侧坐标
  67.     }
  68.     
  69.     public function draw($image, $topColor, $belowColor, $sideColor, $borderColor = null, $type = LEFT)
  70.     {
  71.         if (is_null($borderColor))
  72.         {
  73.             $borderColor = 0xcccccc;
  74.         }
  75.         
  76.         $top_rgb = $this->getRGB($topColor);
  77.         $below_rgb = $this->getRGB($belowColor);
  78.         $side_rgb = $this->getRGB($sideColor);
  79.         $top_color = imagecolorallocate($image, $top_rgb[R], $top_rgb[G], $top_rgb[B]);
  80.         $below_color = imagecolorallocate($image, $below_rgb[R], $below_rgb[G], $below_rgb[B]);
  81.         $side_color = imagecolorallocate($image, $side_rgb[R], $side_rgb[G], $side_rgb[B]);
  82.         
  83.         imagefilledpolygon($image, $this->getTopPoints(), 4, $top_color); //画顶面
  84.         imagepolygon($image, $this->getTopPoints(), 4, $borderColor); //画顶面边线
  85.         
  86.         imagefilledpolygon($image, $this->getBelowPoints(), 4, $below_color); //画下面
  87.         imagepolygon($image, $this->getBelowPoints(), 4, $borderColor); //画下面边线
  88.         
  89.         if ($type == LEFT)
  90.         {
  91.             imagefilledpolygon($image, $this->getRightSidePoints(), 4, $side_color); //画右侧面
  92.             imagepolygon($image, $this->getRightSidePoints(), 4, $borderColor); //画侧面边线
  93.         }    
  94.     }
  95.     
  96.     public function getRGB($color)
  97.     {
  98.         $ar = array();
  99.         $color = hexdec($color);
  100.         $ar[R] = ($color>>16) & 0xff;
  101.         $ar[G] = ($color>>8) & 0xff;
  102.         $ar[B] = ($color) & 0xff;
  103.         return $ar;
  104.     }
  105. }
  106. class Bardate
  107. {
  108.     private $_W;
  109.     private $_H;
  110.     private $_bgColor = "ffffff";
  111.     private $_barHeights = array();
  112.     private $_barTexts = array();
  113.     private $_barColors = array();
  114.     public $_title;
  115.     public $_paddingTop = 30;
  116.     public $_paddingBottom = 100;
  117.     public $_paddingLeft = 45;
  118.     public $_paddingRight = 2;
  119.     public $_barL = 50;
  120.     public $image;
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • PHP测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1