首页学院源码字体下载软件电脑书| 素材图片模版壁纸酷站图标笔刷纹理|小游戏博客QQ表情投票计数器JoyRssMail
动态网站制作指南
首页|网络编程|站长之家|网页制作|图形图象|操作系统|冲浪宝典|软件教学|网络办公|手机学院|邮件系统|网络安全|认证考试
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > PHP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

用GD图库生成横竖柱状图折线图的类


发表日期:2005-5-20 |


最近写的一个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); 
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; 

//--------------完成打印图形http://knowsky.com 
function printAll(){ 
ImageGIF($this->IMAGE); 
ImageDestroy($this->IMAGE); 

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


$report=new ImageReport; 
$report->setImage(600,300,255,255,255,1);//参数(长,宽,背影色R,G,B,是否透明1或0) 
$temparray="50,25,100,250,180,200,150,220,200,150,50,25,100,250,180,200,150,220,200,150";//数值,用指定符号隔开 
$report->setItem(',',$temparray,3,20);//参数(分隔数值的指定符号,数值变量,样式1为竖柱图2为横柱图3为折线图,距离) 
$report->setFont(1);//字体大小1-10 
$report->PrintReport(); 
//$report->debug();//调式之用 
?>

关注此文的读者还看过:
·PHP程序员最易犯10种错误
·php:树形结构的算法
·使用session_set_save_handler函数重载SESSION存储方式之MYSQL
·多数据表共用一个页的新闻发布
·php连接mysql测试和配置
·复杂检索数据并分页显示的处理方法
·Web应用优化技巧
·升级PHP5的理由:PHP4和PHP5性能对比
·WML,Apache,和 PHP 的介绍
·Karrigell 入门

浏览全部php的内容 PS笔刷下载 39种不同语言在线翻译
文章搜索服务





邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<PHP技巧>的内容
Powered by JoyRssMail

网络编程文章分类

本月文章推荐
. PHP验证身份证收藏.
. 一个SQL管理员的web接口.
. PHP正则表达式从url中取得域名.
. PHP图形验证码程序.
. JSON在PHP中的应用.
. 不同文件构建PHP程序的正确方式.
. 在debian下为PHP5.0.3安装pdo模块 .
. 如何将一个表单同时提交到两个地方.
. NuSOAP与PHPRPC比较.
. 用文本作数据处理.
. PHP安全基础原则与方法.
. 用PHP的Socket建立自己的聊天室服务.
. 五个常见 PHP 数据库问题.
. PHP 如何向 MySQL 发送数据.
. PHPUnit袖珍指南之命令行测试工具.
. php论坛服务器架构.
. 使用OOP技术来优化PHP应用程序.
. BS结构中使用PHP访问ORACLE LOB.
. PHP5中的访问控制!public ,privat.
. 利用单元测试对PHP代码进行检查.
. 复杂检索数据并分页显示的处理方法.
. 一个查看session内容的函数.
. file_get_contents和curl函数用法.
. 如何对php程序中的常见漏洞进行攻击.
. PHP服务器变量设置的方法介绍.
. 最小化数据传输——在客户端存储数.
. 数据抽象层->ADODB入门基础.
. PHP SOCKET 技术研究.
. 用PHP自动把纯文本转换成Web页面.
. 如何利用php+mysql保存和输出文件.
  最新网站源码 最新软件下载
2009-7-4 84网址站 v4.10
2009-7-4 仿webmasterhome 网站收录查询 v
2009-7-4 NOCC v1.8
2009-7-4 易和阳光购物商城 v1.4 Access F
2009-7-4 OK伯乐招聘求职系统
2009-7-3 MyBB v1.4.8
2009-7-3 miniBB v2.3
2009-7-3 Modoer多功能点评系统 v1.1.0 Bu
2009-7-3 Modoer多功能点评系统 v1.1.0 Bu
2009-4-4 SharePoint Designer 2007
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
2009-3-20 Internet Explorer 8 简体中文正
  发表评论
姓 名: 验证码: [ 查看评论 ]
内 容:
 
站长工具:Google PR查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|公积金贷款计算|购房银行按揭利率计算|实时汇率查询换算|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 コーチ ホームページ作成
過払い請求 現金化 債務整理 現金化