程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 用GD圖庫生成橫豎柱狀圖折線圖的類

用GD圖庫生成橫豎柱狀圖折線圖的類

編輯:關於PHP編程

最近寫的一個GD圖庫用以生成橫豎柱狀圖和折線圖的類庫,算是一個教學例程吧 
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); 

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