程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 數據統計圖類實例代碼詳解

php 數據統計圖類實例代碼詳解

編輯:關於PHP編程


  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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved