微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript html5 canvas绘制时钟效果

本文实例讲述了JavaScript+html5 canvas绘制时钟效果分享给大家供大家参考,具体如下:

HTML部分:

rush:xhtml;"> <Meta charset="UTF-8"> <Meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> canvas绘图

JavaScript部分:

rush:js;"> function init(){ var canvas = document.getElementById("canvas"),context = canvas.getContext("2d");

setInterval(function(){draw(canvas,context)},1000);
}
function draw(canvas,context){
var x = canvas.width,y = canvas.height,r = Math.min(x/2,y/2);

context.clearRect(0,x,y); //清除绘画历史
//绘画钟框
context.fillStyle = "#f1f1f1";
drawCircle(context,y,r);
//绘画文字
var tx = x/2,ty = y/2,tr = 0.8r;
context.font = "bold 12px 微软雅黑";
context.fillStyle = "#000";
drawText(context,"1",tx + 0.5
tr,ty - 0.866tr);
drawText(context,"2",tx + 0.866
tr,ty - 0.5tr);
drawText(context,"3",tx + tr,ty);
drawText(context,"4",ty + 0.5
tr);
drawText(context,"5",ty + 0.866tr);
drawText(context,"6",tx,ty + tr);
drawText(context,"7",tx - 0.5
tr,"8",tx - 0.866tr,"9",tx - tr,"10","11","12",ty - tr);
//获取当前时间
var date = new Date(),h = date.getHours(),m = date.getMinutes(),s = date.getSeconds(),angleH = (360/12)
Math.PI/180,angleM = (360/60)Math.PI/180
context.strokeSyle = "#000";
//绘制时刻度
drawScale(context,r,angleH,-0.88
r,-0.96r,3);
//绘制分刻度
drawScale(context,angleM,-0.93
r,1);
//绘画时分秒针
drawCircle(context,3);
drawNeedle(context,hangleH + mangleM/12,-0.5r);
drawNeedle(context,m
angleM + sangleM/60,-0.6r);
drawNeedle(context,sangleM,-0.75r);

}
//绘画圆
function drawCircle(context,r){
context.save();
context.beginPath();
context.arc(x/2,y/2,Math.PI2,0);
context.fill();
context.closePath();
context.restore();
}
//绘画文字方法
function drawText(context,text,y){
context.save();
x -= (context.measureText(text).width/2);
y += 4;
context.translate(x,y);
context.fillText(text,0);
context.restore();
}
//绘制刻度方法
function drawScale(context,rotate,start,end,linewidth){
context.save();
context.beginPath();
context.translate(x/2,y/2);
context.linewidth = linewidth;
for (var i = 0; i < 60; i++) {
context.rotate(rotate);
context.moveto(0,start);
context.lineto(0,end);
}
context.closePath();
context.stroke();
context.restore();
}
//绘画时分秒针方法
function drawNeedle(context,line){
context.save();
context.translate(x/2,y/2);
context.beginPath();
context.rotate(rotate);
context.moveto(0,0.1
r);
context.lineto(0,line);
context.closePath();
context.stroke();
context.restore();
}

希望本文所述对大家JavaScript程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐