图形化静态时钟

<?
/*
图形化静态时钟
1.取小时:分钟
2.计算时针和分针位置
 1)表盘的一周是12小时,因此1小时将占据1/12圆周,即30度(360度/12),换处成弧度即30*2*3.14/360;
 2)60分钟=1小时,即每分钟时针走0.5度(30度/60)
   表盘的一周是60分钟,因此1分钟分针针占据1/60圆周,即6度(360度/60)
   故而,
   $th=(30*$hour+0.5*$min)*(2*$pi/360)
   $tm=(6*$imin)*(2*pi/360);
3.绘图
*/

header("Content_type:image/gif");

/*
time()返回从1970年1月1日0时起把过去的秒数(时间戳),返回的是一个整数。
date("格式串",时间戳),返回时间
格式串:
H 小时(24小时制)
h 小时(12小时制)
i 分钟
l 星期
d 日
F 月份
*/

/*
strftime("格式串",时间戳)返回用给定的格式字串对给出的timestamp进行格式输出后的字符串。如果没有给出时间戳则用当前的本地时间。
格式串:
%H-24小时制的十进制小时数(范围从00到23)
%M-十进制分钟数
%A-当前区域星期几的全称
%d-月份中的第几天,十进制数字(范围从01到31)
%b-当前区域月份的简写

array getdate([int timestamp])返回一个根据timestamp得出的包含有日期信息的数组。如果没有给出时间戳则认为是当前本地时间。数组中的单元如下:seconds/minutes/hours/mday/wday/mon/year/yday(一年中的第几天)/weekday/month
例:
$today=getdate();
echo $today["weekday"]

*/

//获得小时
$hour=date(h);

//获得分钟
$min=date(i);

//定义pi值
$p=3.14159;

//换算图形化时钟上时针和分针所在的位置
$th=(30*$hour+$min/2)*((2*$p)/360);
$tm=($min*6)*((2*$p)/360);

//创建图像
$image=imagecreate(220,220);

//设置背景色
$colorbk=imagecolorallocate($image,200,200,200);

//设置前景色
$color=imagecolorallocate($image,225,0,0);

//设置字体颜色
$colorY=imagecolorallocate($image,225,0,255);

//设置表盘边框颜色
$colorGreen=imagecolorallocate($image,0,225,0);

//设置表盘颜色
$colorBlue=imagecolorallocate($image,0,0,225);

//用背景色填充图像
imagefill($image,0,0,$colorbk);

//绘制表盘
for ($i=0;$i<12;$i++)
{
 $a=$i*$p/6;
 $x=100+sin($a)*100;
 $y=100-cos($a)*100;
 
 /*画圆弧imagearc(resource image,int x,int y,intw,int h,int s,int e,int color),以x,y(图像左上角为0,0)为中心在image所代表的图像中画一个椭圆弧。w,h分别指定了椭圆的宽度和高度,起始和结束以S和E参数以角度指定。0度位于三点钟位置,以逆时钟方向绘画。*/
 imagearc($image,$x,$y,5,5,0,360,$color);
 
 //在图上书写字符串
 imagestring($image,4,$x,$y,$i,$color);
}

//以绿色绘制表盘
imagearc($image,100,100,200,200,0,360,$colorGreen);

//以蓝色填色表盘
//imagefill() 在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。
imagefill($image,100,100,$colorBlue);

//绘制中心小圆圈
imagearc($image,100,100,10,10,0,360,$color);

//为小圆周填充颜色
imagefill($image,100,100,$color);

//时针的弧度坐标
$x_h=100+sin($th)*60;
$y_h=100-cos($th)*60;

//分针的弧度坐标
$x_m=100+sin($tm)*80;
$y_m=100-cos($tm)*80;

//画出时针和分针
imageline($image,100,100,$x_h,$y_h,$color);
imageline($image,100,100,$x_m,$y_m,$color);

//显示图像
imagepng($image);

//释放图像资源
imagedestroy($image);

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值