php生成扇形比例图实例


Posted in PHP onNovember 06, 2013

我们在很多网站会看到一些图形的百分比显示图,像三个地区所占地多少或者是成绩等,给大家介绍一款用php生成的扇形比例百分比显示程序代码,不过使用它首先得有phpGD库支持。

<?php
//填充图表的参数
$ChartDiameter = 60; //图表直径
$ChartData = array(30,70);//用于生成图表的数据,可通过数据库来取得来确定也可以多个不过和颜色数组对应
//把角度转换为弧度
function radians($degrees){return($degrees*(pi()/180.0));}
//取得在圆心为(0,0)圆上 x,y点的值
function circle_point($degrees,$diameter){$x=cos(radians($degrees))*($diameter/2);$y=sin(radians($degrees))*($diameter/2);return (array($x,$y));}
//确定图形的大小
$ChartWidth = $ChartDiameter + 20;
$ChartHeight = $ChartDiameter + 20;
//确定统计的总数
$ChartTotal = “”;
for($index = 0;$index < count($ChartData);$index++){
$ChartTotal += $ChartData[$index];
}
$ChartCenterX = $ChartDiameter/2 + 10;
$ChartCenterY = $ChartDiameter/2 + 10;
//生成空白图形
$image = imagecreate($ChartWidth, $ChartHeight);
//分配颜色
$colorBody = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$colorBorder = imagecolorallocate($image, 0×00, 0×00, 0×00);
$colorText = imagecolorallocate($image, 0×00, 0×00, 0×00);
$colorSlice[] = imagecolorallocate($image, 0xFF, 0×00, 0×00);//这里是和你上面写的数组对应的颜色
$colorSlice[] = imagecolorallocate($image, 0×00, 0xFF, 0×00);
//填充背境
imagefill($image, 0, 0, $colorBody);
//画每一个扇形
$Degrees = 0;
for($index = 0; $index < count($ChartData); $index++){
$StartDegrees = round($Degrees);
$Degrees += (($ChartData[$index]/$ChartTotal)*360);
$EndDegrees = round($Degrees);
$CurrentColor = $colorSlice[$index%(count($colorSlice))];
//画图F
imagearc($image,$ChartCenterX,$ChartCenterY,$ChartDiameter,$ChartDiameter,$StartDegrees,$EndDegrees, $CurrentColor);
//画直线
list($ArcX, $ArcY) = circle_point($StartDegrees, $ChartDiameter);
imageline($image,$ChartCenterX,$ChartCenterY,floor($ChartCenterX + $ArcX),
floor($ChartCenterY + $ArcY),$CurrentColor);
//画直线
list($ArcX, $ArcY) = circle_point($EndDegrees, $ChartDiameter);
imageline($image,$ChartCenterX,$ChartCenterY,ceil($ChartCenterX + $ArcX),
ceil($ChartCenterY + $ArcY),$CurrentColor);
//填充扇形
$MidPoint = round((($EndDegrees ? $StartDegrees)/2) + $StartDegrees);
list($ArcX, $ArcY) = circle_point($MidPoint, $ChartDiameter/2);
imagefilltoborder($image,floor($ChartCenterX + $ArcX),floor($ChartCenterY + $ArcY),
$CurrentColor,$CurrentColor);
}
//到此脚本 已经生了一幅图像的,现在需要的是把它发到浏览器上,重要的一点是要将标头发给浏览器,让它知道是一个GIF文件。不然的话你只能看到一堆奇怪的乱码
header(“Content-type: image/png”);
imagegif($image);
?>
 

PHP 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
Php注入点构造代码
Jun 14 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
10条php编程小技巧
Jul 07 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
php多用户读写文件冲突的解决办法
Nov 06 #PHP
php生成图形(Libchart)实例
Nov 06 #PHP
php ZipArchive压缩函数详解实例
Nov 06 #PHP
php根据分类合并数组的方法实例详解
Nov 06 #PHP
php foreach循环中使用引用的问题
Nov 06 #PHP
php用正则表达式匹配中文实例详解
Nov 06 #PHP
php引用传值实例详解学习
Nov 06 #PHP
You might like
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
深入PHP数据加密详解
2013/06/18 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
JavaScript事件列表解说
2006/12/22 Javascript
window.showModalDialog使用手册
2007/01/11 Javascript
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
保护黄河倡议书
2014/05/16 职场文书
生活小常识广播稿
2014/09/16 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript