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 相关文章推荐
在PHP中执行系统外部命令
Oct 09 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
php统计时间和内存使用情况示例分享
Mar 13 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
zend framework中使用memcache的方法
Mar 04 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP使用函数用法详解
Sep 30 PHP
PDO::getAvailableDrivers讲解
Jan 28 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php实现文件下载更能介绍
2012/11/23 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
使用python+whoosh实现全文检索
2019/12/09 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
效能监察建议书
2014/05/19 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
综合素质自我评价评语
2015/03/06 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技